Vai alla documentazione

Deep link

I Kixo Deep Links inviano ogni persona alla destinazione migliore disponibile. Se l'app è installata, lo stesso link HTTPS brandizzato apre la schermata giusta nell'app. Altrimenti può aprire il tuo sito, App Store o il fallback di Google Play. L'apertura verificata dell'app è gestita dal sistema operativo; se il link arriva nel browser, Kixo applica il fallback salvato per quel link.

Inizia da Kixo

Apri Impostazioni progetto → Link profondi, crea un indirizzo e copia la configurazione mostrata per quell'indirizzo. L'host nella dashboard è la fonte di riferimento per tutti gli snippet qui sotto.

Come si apre un link

Dispositivo della personaRisultato
App installata e configurazione degli App Link validaL'app si apre direttamente sulla destinazione del link.
App non installataKixo usa il fallback del sito o dello store selezionato per quel link.
Browser desktopSi apre il fallback del sito.
Configurazione dell'app incompletaSi apre il fallback sicuro invece di mostrare un prompt dell'app non funzionante.

Usa l'host brandizzato esatto

L'host di un link Kixo appartiene a un solo progetto e ha un aspetto come yourbrand.kixo.cc. Nei progetti di sviluppo può avere un suffisso diverso gestito da Kixo. Copia sempre l'host completo dalla dashboard.

I caratteri jolly non funzionano

Configura yourbrand.kixo.cc, non *.kixo.cc e non kixo.cc. Android e iOS verificano l'host esatto che la persona apre.

Sito web e handoff QR

Il Web SDK riconosce automaticamente l'arrivo da un link Kixo. Usa getLinkData() solo se il tuo sito deve usare nel proprio router il contesto della campagna risolta o parametri personalizzati.

js
const link = Kixo.getLinkData();

if (link?.params.product_id) {
  // URL values are user-controlled. Allowlist them before routing.
  router.openProduct(link.params.product_id);
}

Offri “Apri nell'app” sul web mobile

Passa l'URL pubblico completo restituito da Kixo. Il banner viene mostrato solo sul web mobile e lascia al link Kixo la scelta tra app installata, store o destinazione web.

js
Kixo.showSmartBanner({
  linkId: 'YOUR_KIXO_LINK_ID',
  linkUrl: 'https://YOUR_EXACT_KIXO_HOST/link/YOUR_LINK_SLUG',
  title: 'Continue in the app',
});

Riprendi una sessione desktop da un codice QR

Per un QR mostrato sul tuo sito, chiedi a Kixo di creare un handoff per un link esistente invece di costruire tu un URL. Kixo usa le destinazioni dell'app e del sito già salvate per quel link.

js
const handoff = await Kixo.createQrHandoff({
  linkId: 'YOUR_KIXO_LINK_ID',
  params: {
    product_id: '42',
  },
});

qrCode.render(handoff.url);

Usa i valori restituiti da Kixo

Passa l'ID del link da Kixo e usa l'URL restituito senza modificarlo. I params facoltativi aggiungono contesto al percorso dell'app o del sito presente nell'allowlist; non sostituiscono la destinazione del link. Non passare un ID utente o un ID dispositivo.

Android App Links

Prima di modificare il codice, salva in App e configurazione il nome del pacchetto Android e tutte le impronte SHA-256 della firma dell'app. Se la release è firmata da Google Play, aggiungi anche l'impronta di Play App Signing, oltre a quelle usate per build dirette o interne.

1. Aggiungi l'host al manifest

Aggiungi questo intent filter all'activity che gestisce la navigazione dell'app. Sostituisci solo il segnaposto dell'host.

xml
<activity
    android:name=".MainActivity"
    android:exported="true">
    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data
            android:scheme="https"
            android:host="YOUR_EXACT_KIXO_HOST"
            android:pathPrefix="/link/" />
    </intent-filter>
</activity>

2. Gestisci le aperture a caldo

L'SDK di Kixo legge un App Link all'avvio a freddo. Quando Android riutilizza un'activity esistente, inoltra il nuovo intent così l'apertura a caldo segue lo stesso percorso di attribuzione e routing.

kotlin
import android.content.Intent
import io.kixo.sdk.Kixo

override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)
    setIntent(intent)
    intent.dataString?.let { url ->
        Kixo.handleDeepLink(url, source = "applink")
    }
}

3. Verifica Android

Dopo aver modificato il manifest, reinstalla l'app, poi chiedi ad Android di verificare l'host e controlla il risultato.

bash
adb shell pm verify-app-links --re-verify YOUR_ANDROID_PACKAGE
adb shell pm get-app-links YOUR_ANDROID_PACKAGE

# The exact host should be "verified".
adb shell am start -W \
  -a android.intent.action.VIEW \
  -d "https://YOUR_EXACT_KIXO_HOST/link/YOUR_LINK_SLUG"

Suggerimento

Se compare il selettore del browser, di solito l'host esatto, il nome del pacchetto o l'impronta della firma non corrispondono. Controlla questi tre valori prima di toccare il codice di navigazione dell'app.

iOS Universal Links

Salva in App e configurazione il bundle ID dell'app e l'Apple team ID. In Xcode, abilita la capability Domini associati sullo stesso target dell'app e con la stessa configurazione di firma usata dalla build installata.

1. Aggiungi il dominio associato

applinks:YOUR_EXACT_KIXO_HOST

2. Gestisci i link a freddo e a caldo

Scegli il ciclo di vita usato dall'app. In entrambi gli esempi, la destinazione risolta viene passata al router della tua app; Kixo non sostituisce la navigazione dell'app.

import Kixo

WindowGroup {
    ContentView()
        .onKixoDeepLink { link in
            guard link.phase == .resolved else { return }
            router.open(link.targetPath ?? link.path)
        }
}

3. Verifica iOS

  1. Rimuovi l'app dal dispositivo, poi installa la build firmata.
  2. Apri un vero link Kixo da Note, Messaggi o Safari. Non limitarti a incollarlo nella barra degli indirizzi di Safari come unico test.
  3. Verifica che un'apertura a freddo avvii l'app sulla schermata prevista.
  4. Lascia l'app aperta, tocca di nuovo il link e verifica l'apertura a caldo.
  5. Verifica che l'apertura del link compaia in Kixo.

Mantieni il routing dentro l'app

Un link Kixo può includere una destinazione come /products/42. Mappa i percorsi che conosci alle schermate della tua app e mantieni i controlli di accesso già presenti. Non trasformare il valore risolto in un apri-URL generico.

Kixo.setDeferredDeepLinkListener { link ->
    if (link?.phase != KixoDeepLinkPhase.RESOLVED) return@setDeferredDeepLinkListener
    when {
        link.targetUrl?.startsWith("/products/") == true ->
            router.openProduct(link.targetUrl.substringAfterLast("/"))
        link.targetUrl == "/account" ->
            router.openAccount()
    }
}

Passa questo a un assistente di sviluppo

Sostituisci i cinque segnaposto con i valori presi da Impostazioni progetto → App e configurazione e Deep link, poi incolla il brief completo in Codex, Claude Code, Cursor, Windsurf o in un altro assistente di sviluppo.

text
Add Kixo Deep Links to this app.

Project values:
- Kixo branded host: YOUR_EXACT_KIXO_HOST
- Android package name: YOUR_ANDROID_PACKAGE
- Android SHA-256 signing fingerprints: YOUR_ANDROID_FINGERPRINTS
- iOS bundle ID: YOUR_IOS_BUNDLE_ID
- Apple team ID: YOUR_APPLE_TEAM_ID

Requirements:
1. Use the exact branded host above. Do not replace it with kixo.cc, dixo.dev, a wildcard, or the website domain.
2. Keep the app's existing navigation. Kixo resolves and measures the link; the app decides which screen to show.
3. Android:
   - add an android:autoVerify App Links intent filter for https://YOUR_EXACT_KIXO_HOST/link/
   - keep the package name and every release signing fingerprint in Kixo Apps & setup
   - forward warm Activity.onNewIntent URLs to Kixo.handleDeepLink(url, source = "applink")
4. iOS:
   - add applinks:YOUR_EXACT_KIXO_HOST to the app target's Associated Domains entitlement
   - keep the bundle ID and Apple team ID in Kixo Apps & setup
   - for SwiftUI, attach .onKixoDeepLink to the root view
   - for UIKit scenes, forward cold connectionOptions and warm NSUserActivity callbacks to Kixo
5. Route only known in-app paths. Do not blindly open an arbitrary URL returned by a link.
6. Test a cold open and a warm open on a physical device or emulator. Confirm the app opens directly and the link open appears in Kixo.

Return:
- the files changed
- the exact host configured in each platform
- cold-open and warm-open test results
- anything still requiring a dashboard or signing-account change

Cosa l'assistente non deve inventare

L'host brandizzato, il nome del pacchetto, le impronte della firma, il bundle ID e l'Apple team ID provengono dalla tua app e dal progetto Kixo. Un assistente può collegare il codice, ma deve fermarsi e segnalare un valore mancante invece di inventarlo.

Checklist di rilascio

  • L'host Kixo esatto è presente nella configurazione di Android e iOS.
  • Android segnala l'host come verificato per il pacchetto di release.
  • Le impronte di firma della release sono salvate in Kixo.
  • L'entitlement di iOS è presente nella build firmata dell'app.
  • Le aperture a freddo e a caldo portano alla schermata prevista.
  • Il fallback del sito o dello store funziona anche senza l'app installata.
  • L'apertura del link compare nelle analisi di Kixo.

Guide correlate