# Teilen per Link Ein geteilter Link sieht so aus: ``` https:///?song= https:///?album= ``` 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: ```bash ./gradlew assembleRelease -PnovasonicHost=music.example.com ``` Dann den SHA-256 des **Release**-Signaturschlüssels ermitteln … ```bash keytool -list -v -keystore .jks -alias | grep SHA256 ``` … und in `public/.well-known/assetlinks.json` anstelle von `PLATZHALTER_RELEASE_SHA256` eintragen. 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. ### Ablauf eines Umzugs 1. **Neue Domain aufsetzen**, Web-App und `/.well-known/assetlinks.json` dort erreichbar machen. Die alte Domain bleibt vorerst unverändert online. 2. **APK mit beiden Hosts bauen** (`-PnovasonicHost=neu -PnovasonicHost2=alt`) und installieren. Ab jetzt öffnen Links beider Adressen in der App. 3. **In der App die „NovaSonic Web-Adresse" auf die neue Domain umstellen.** Neu geteilte Links zeigen ab sofort dorthin, alte funktionieren weiter. 4. **Warten**, bis auf allen Geräten das neue APK läuft. 5. **Alte Domain abschalten** — und danach das APK ohne `novasonicHost2` neu bauen. Schritt 5 nicht vergessen: Android verifiziert die Domains bei jeder Installation neu, und auf Android 11 und älter genügt ein einziger nicht erreichbarer Host, damit die Verifikation komplett fehlschlägt. Bereits verifizierte Installationen laufen zwar weiter, aber die nächste Neuinstallation hätte gar keine funktionierenden App Links mehr. Zwei weitere Fallen: - **Signaturschlüssel muss derselbe bleiben.** Ein anders signiertes APK lässt sich nur nach Deinstallation installieren — und die nimmt die Offline-Downloads mit. - **Alte Links nach der Abschaltung** öffnen nur dann noch etwas, wenn die alte Domain auf die neue weiterleitet. Dann landen sie allerdings im Browser statt in der App, weil Android eine Weiterleitung nicht erneut an die App übergibt. 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 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.