# YPChat Android Native Android-App fuer den bestehenden YPChat-Server. ## Stack - Kotlin - Jetpack Compose - Retrofit/OkHttp fuer REST - Socket.IO Android Client fuer den Chat - persistente OkHttp `CookieJar`, damit REST und Socket dieselbe `connect.sid`-Session nutzen ## Projekt Oeffnen Den Ordner `android/` in Android Studio oeffnen. Das Projekt ist auf Android Gradle Plugin `8.13.2`, Gradle `8.13`, JDK 17 und `compileSdk = 36` ausgelegt. Falls Android Studio keinen Gradle Wrapper erzeugt, kann er in diesem Ordner mit einer lokalen Gradle-Installation nachgezogen werden: ```powershell gradle wrapper --gradle-version 8.13 ``` Danach: ```powershell .\gradlew.bat :app:assembleDebug ``` ## Backend-URLs Debug und Release verwenden standardmaessig: ```text https://www.ypchat.net ``` Fuer lokale Tests kann die URL in `android/local.properties` ueberschrieben werden: ```properties ypchat.baseUrl=http://10.0.2.2:3300 ``` `10.0.2.2` zeigt im Android Emulator auf den lokalen Rechner. Auf einem echten Geraet muss stattdessen die LAN-IP des Rechners oder ein Dev-Tunnel verwendet werden, z.B.: ```properties ypchat.baseUrl=http://192.168.178.42:3300 ``` ## Implementierte Funktionen - `GET /api/session` - Socket.IO Connect mit WebSocket zuerst und Polling-Fallback - `setSessionId` - `login` - `userList` - `requestConversation` - Textnachrichten ueber `message` - `requestOpenConversations` - `requestHistory` - `userSearch` - `blockUser` - `POST /api/logout` - Laenderliste im Login ueber `/api/countries` - Android Photo Picker und Kameraaufnahme - Bildupload ueber `/api/upload-image` mit 5-MB-Grenze - lokale Logout-Markierung: Nach einem expliziten Logout wird eine noch vorhandene Server-Session nicht automatisch wiederhergestellt - Socket.IO-Reconnect mit erneutem Setzen der Express-Session; beim Zurueckkehren in die App wird eine fehlende Verbindung erneut aufgebaut - Videochat mit Kamera- und Mikrofonfreigabe - Feedback, Partner, FAQ, Regeln, Sicherheit, Datenschutz und Impressum ## Build-Status Der Debug- und der minifizierte Release-Build werden erfolgreich erzeugt: ```text ./gradlew :app:assembleDebug ./gradlew :app:assembleRelease ``` ## Release-Abnahme vor Google Play Die folgenden Punkte sind keine fehlenden App-Funktionen, sondern muessen vor dem Veroeffentlichen mit realen Konten und Geraeten abgenommen werden: 1. Login, Chat, Bildversand, Blockieren und Logout auf mindestens zwei echten Android-Geraeten pruefen. 2. Die App waehrend eines Chats in den Hintergrund legen, wieder oeffnen und den Socket-Reconnect pruefen. 3. Einen Videoanruf zwischen zwei echten Geraeten inklusive Kamera-, Mikrofon- und Berechtigungsdialog pruefen. 4. Die Angaben in `DATA_SAFETY_DRAFT.md` mit dem tatsaechlichen Server-/Loeschprozess abgleichen und die Datenschutzerklaerung in der Play Console hinterlegen. 5. Store-Name, Kategorie und die vorhandenen Store-Grafiken final pruefen; die Texte und Checklisten liegen in den weiteren Dateien dieses Ordners.