98 lines
3.0 KiB
Markdown
Executable File
98 lines
3.0 KiB
Markdown
Executable File
# 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.
|