diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index ac82b84..78c8eb8 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -19,8 +19,15 @@ android { // Host der eigenen NovaSonic-Web-App — Ziel der geteilten Links. Einmal in // gradle.properties setzen (novasonicHost=music.example.com); ohne Angabe bleibt der // Platzhalter stehen und der App-Link greift schlicht nicht. - manifestPlaceholders["shareHost"] = - (project.findProperty("novasonicHost") as String?) ?: "music.example.com" + val host1 = (project.findProperty("novasonicHost") as String?) ?: "music.example.com" + // Zweiter Host fuer einen Domainwechsel: solange beide Adressen erreichbar sind, oeffnen + // Links von der alten UND der neuen in der App. Ohne Angabe wird host1 wiederholt — ein + // doppelter Eintrag ist harmlos, ein Platzhalter-Host waere es NICHT: auf Android 11 und + // aelter verifiziert das System nur, wenn ALLE angegebenen Hosts eine gueltige + // assetlinks.json ausliefern, ein toter Host wuerde also alle blockieren. + val host2 = (project.findProperty("novasonicHost2") as String?) ?: host1 + manifestPlaceholders["shareHost"] = host1 + manifestPlaceholders["shareHost2"] = host2 } buildFeatures { diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 9d0da22..eac54b8 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -44,6 +44,7 @@ + diff --git a/docs/share-links.md b/docs/share-links.md index e812ce1..694b8e0 100644 --- a/docs/share-links.md +++ b/docs/share-links.md @@ -40,6 +40,29 @@ keytool -list -v -keystore .jks -alias | grep SHA256 Die Datei muss unter `https:///.well-known/assetlinks.json` erreichbar sein — sie liegt im `public/`-Verzeichnis und wird vom Frontend-Image mit ausgeliefert. +## Domain wechseln + +**Ausgehende Links** folgen der Einstellung „NovaSonic Web-Adresse" — Adresse ändern, fertig, kein +neues APK nötig. + +**Eingehende Links** stehen fest im Manifest und brauchen ein neues APK. Damit während des Umzugs +beide Adressen funktionieren, lassen sich zwei Hosts angeben: + +```bash +./gradlew assembleRelease -PnovasonicHost=neu.example.com -PnovasonicHost2=alt.example.com +``` + +Beide müssen eine gültige `assetlinks.json` ausliefern. Das ist keine Feinheit: **auf Android 11 und +älter verifiziert das System nur, wenn ALLE angegebenen Hosts eine passende Datei liefern** — ein +toter Host blockiert also auch den funktionierenden. Sobald die alte Domain abgeschaltet wird, das +APK deshalb ohne `novasonicHost2` neu bauen. + +Wildcards (`*.example.com`) sind für App Links nicht dokumentiert und werden hier bewusst nicht +verwendet — die Verifikation läuft pro Host. + +Bereits verschickte Links auf die alte Domain öffnen nach deren Abschaltung gar nichts mehr; das +lässt sich nur mit einer Weiterleitung von alt nach neu abfangen. + Prüfen lässt sich das Ergebnis mit: ```bash