feat(android): zweiter App-Link-Host fuer einen Domainwechsel
Der Host eingehender Links steht fest im Manifest, ein Domainwechsel brauchte also zwingend ein neues APK und liess alte Links sofort ins Leere laufen. Mit -PnovasonicHost2= laesst sich waehrend des Umzugs eine zweite Adresse angeben; ohne Angabe wird der erste Host wiederholt. Bewusst kein Platzhalter-Host als Vorgabe: auf Android 11 und aelter verifiziert das System nur, wenn ALLE Hosts eine gueltige assetlinks.json liefern — ein toter Eintrag wuerde alle blockieren. Am zusammengefuehrten Manifest geprueft, beide Hosts landen darin. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
430ecdc737
commit
a89e2974bc
3 files changed
+33
-2
No files matched your search
@@ -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 {
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
<category android:name="android.intent.category.BROWSABLE"/>
|
||||
<data android:scheme="https" android:host="${shareHost}"/>
|
||||
<data android:scheme="https" android:host="${shareHost2}"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
|
||||
@@ -40,6 +40,29 @@ keytool -list -v -keystore <dein-keystore>.jks -alias <alias> | grep SHA256
|
||||
Die Datei muss unter `https://<deine-web-adresse>/.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
|
||||
|
||||
Reference in new issue
Block a user