WebView wrapper Android pour Cinny — usage personnel.
- Package :
in.cinny.app - minSdk 26 (Android 8.0) · targetSdk 34 (Android 14)
- Kotlin · AndroidX · WebView
- Notifications Android natives : bridge WebView + service Matrix natif en arrière-plan
- Son de notif personnalisé dans
res/raw/notification_sound.ogg
- JDK 17
- Android SDK (cmdline-tools) avec
platforms;android-34etbuild-tools;34.0.0 - Variable d'env
ANDROID_HOMEouANDROID_SDK_ROOT
# Crée le wrapper Gradle au premier lancement
gradle wrapper --gradle-version 8.7
# APK debug (signé avec la clé debug)
./gradlew assembleDebug
# -> app/build/outputs/apk/debug/app-debug.apk
# APK release non signé
./gradlew assembleReleaseOuvrir le dossier racine → laisser Gradle synchroniser → Build > Build APK(s).
Génère une keystore puis ajoute dans app/build.gradle.kts un bloc signingConfigs, ou utilise l'assistant Build > Generate Signed Bundle / APK d'Android Studio.
keytool -genkey -v -keystore cinny.keystore -alias cinny \
-keyalg RSA -keysize 2048 -validity 10000- Le bridge JS intercepte
new Notification(...),showNotification(...), et les réponses Matrix/syncvisibles dans la WebView. - Un service Android natif récupère la session Matrix de Cinny et maintient une synchronisation discrète en arrière-plan pour afficher de vraies notifications Android
MessagingStyle. - Android affichera une petite notification persistante « Cinny actif » pendant cette écoute en arrière-plan : c'est requis par Android pour un service actif sans FCM/UnifiedPush.
- Si l'application est forcée à l'arrêt par Android ou par l'utilisateur, aucun wrapper WebView ne peut garantir les notifications : il faudrait alors un vrai serveur push Matrix type Sygnal/FCM ou UnifiedPush.
- Les liens hors
*.cinny.ins'ouvrent dans le navigateur système. - Bouton retour : navigue dans l'historique WebView, sinon minimise l'app.
- Mode hors-ligne : écran d'erreur avec bouton « Réessayer ».