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
|
// Host der eigenen NovaSonic-Web-App — Ziel der geteilten Links. Einmal in
|
||||||
// gradle.properties setzen (novasonicHost=music.example.com); ohne Angabe bleibt der
|
// gradle.properties setzen (novasonicHost=music.example.com); ohne Angabe bleibt der
|
||||||
// Platzhalter stehen und der App-Link greift schlicht nicht.
|
// Platzhalter stehen und der App-Link greift schlicht nicht.
|
||||||
manifestPlaceholders["shareHost"] =
|
val host1 = (project.findProperty("novasonicHost") as String?) ?: "music.example.com"
|
||||||
(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 {
|
buildFeatures {
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
<category android:name="android.intent.category.DEFAULT"/>
|
<category android:name="android.intent.category.DEFAULT"/>
|
||||||
<category android:name="android.intent.category.BROWSABLE"/>
|
<category android:name="android.intent.category.BROWSABLE"/>
|
||||||
<data android:scheme="https" android:host="${shareHost}"/>
|
<data android:scheme="https" android:host="${shareHost}"/>
|
||||||
|
<data android:scheme="https" android:host="${shareHost2}"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</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 —
|
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.
|
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:
|
Prüfen lässt sich das Ergebnis mit:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
Reference in new issue
Block a user