Files
NovaSonic/docs/share-links.md
T
marcandClaude Opus 5 a89e2974bc 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>
2026-09-06 03:47:35 +02:00

3.0 KiB

Teilen per Link

Ein geteilter Link sieht so aus:

https://<deine-web-adresse>/?song=<navidrome-song-id>
https://<deine-web-adresse>/?album=<navidrome-album-id>

Er trägt nur die Id, keine Zugangsdaten. Der Empfänger sieht den Inhalt mit seinem eigenen Navidrome-Konto auf derselben Instanz — wer dort keinen Zugang hat, sieht nichts.

Web

Funktioniert ohne weitere Einrichtung. Der Link wird beim Start ausgelesen (?song= / ?album=), das Album geöffnet und der Song abgespielt; danach verschwindet der Parameter aus der Adresszeile, damit ein Neuladen nicht erneut startet. Als installierte PWA landet der Link dank launch_handler: navigate-existing im bereits offenen Fenster statt in einem neuen.

Android

Zwei Dinge sind nötig, damit ein Link direkt in der App landet statt im Browser:

1. Web-Adresse in der App hinterlegen — Einstellungen → „NovaSonic Web-Adresse". Ohne sie erscheint der Teilen-Eintrag im Kontextmenü gar nicht erst, weil der Link sonst ins Leere zeigt.

2. Den Host beim Bauen mitgeben und die Signatur hinterlegen:

./gradlew assembleRelease -PnovasonicHost=music.example.com

Dann den SHA-256 des Release-Signaturschlüssels ermitteln …

keytool -list -v -keystore <dein-keystore>.jks -alias <alias> | grep SHA256

… und in public/.well-known/assetlinks.json anstelle von PLATZHALTER_RELEASE_SHA256 eintragen. 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:

./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:

adb shell pm get-app-links com.novasonic.app

Steht dort verified, öffnet Android die Links ohne Nachfrage.

Ohne diesen Schritt ist der Link trotzdem nicht verloren: er öffnet im Browser die Web-App. Wer die App bevorzugt, kann sie in den Systemeinstellungen unter Standardmäßig öffnen → Links manuell für die Domain zulassen.