The example-app invitation flows (Swift + the new Kotlin port on feat/kotlin-dashpay-invitations) now emit AppsFlyer-form invitation links only — https://invitations.dashpay.io/applink?du=…&assetlocktx=…&pk=…&islock=… — matching the production wallets (owner decision; the interim dashpay://invite custom scheme is retired). For these links to open the apps, the domain needs infra work:
/.well-known/assetlinks.json — Android App Links verification for the example/production app package(s) + signing-cert SHA-256. The Kotlin app already ships the https intent-filter; we flip android:autoVerify="true" the moment this is served.
/.well-known/apple-app-site-association — iOS Universal Links for the Swift app's app id; the app then adds the associated-domains entitlement.
- Web fallback for
/applink — the path currently 404s (dead since the Firebase Dynamic Links shutdown). A tap without the app installed should land on an install/explainer page. ⚠️ The query string carries pk, a one-time bearer private key — the fallback endpoint must not log query strings (access logs, analytics, CDN logs) and should be served with strict no-referrer.
- AppsFlyer OneLink template/credentials (optional, for the managed short-link + attribution layer) — the account creds sit with the Android team; needed only if we want OneLink-wrapped short links rather than the raw applink form.
Context: #4096 (closed) tracked the earlier universal-link migration; this supersedes it with the concrete host-side checklist. Client-side wiring on both platforms is done up to the two one-line verification flips in (1)/(2).
The example-app invitation flows (Swift + the new Kotlin port on
feat/kotlin-dashpay-invitations) now emit AppsFlyer-form invitation links only —https://invitations.dashpay.io/applink?du=…&assetlocktx=…&pk=…&islock=…— matching the production wallets (owner decision; the interimdashpay://invitecustom scheme is retired). For these links to open the apps, the domain needs infra work:/.well-known/assetlinks.json— Android App Links verification for the example/production app package(s) + signing-cert SHA-256. The Kotlin app already ships thehttpsintent-filter; we flipandroid:autoVerify="true"the moment this is served./.well-known/apple-app-site-association— iOS Universal Links for the Swift app's app id; the app then adds theassociated-domainsentitlement./applink— the path currently 404s (dead since the Firebase Dynamic Links shutdown). A tap without the app installed should land on an install/explainer page.pk, a one-time bearer private key — the fallback endpoint must not log query strings (access logs, analytics, CDN logs) and should be served with strict no-referrer.Context: #4096 (closed) tracked the earlier universal-link migration; this supersedes it with the concrete host-side checklist. Client-side wiring on both platforms is done up to the two one-line verification flips in (1)/(2).