Ves a la documentació

Enllaços profunds

Els Kixo Deep Links envien cada persona a la millor destinació disponible. Si l’app està instal·lada, el mateix enllaç HTTPS amb marca obre la pantalla correcta dins de l’app. Si no ho està, pot obrir el teu web o bé el fallback d’App Store o Google Play. El sistema operatiu gestiona l’obertura verificada de l’app; quan l’enllaç arriba al navegador, Kixo aplica el fallback desat per a aquell enllaç.

Comença a Kixo

Obre Configuració del projecte → Enllaços profunds, crea una adreça i copia la configuració que s’hi mostra. L’host del dashboard és la referència per a tots els fragments de codi següents.

Com s’obre un enllaç

Dispositiu de la personaResultat
App instal·lada i configuració de l’enllaç d’app vàlidaL’app s’obre directament a la destinació de l’enllaç.
App no instal·ladaKixo fa servir el fallback web o de botiga seleccionat per a l’enllaç.
Navegador d’escriptoriS’obre el fallback web.
Configuració de l’app incompletaS’obre el fallback segur en lloc de mostrar un avís d’app trencat.

Fes servir l’host exacte amb marca

L’host d’un enllaç de Kixo pertany a un sol projecte i té un format com yourbrand.kixo.cc. Els projectes de desenvolupament poden fer servir una terminació diferent gestionada per Kixo. Copia sempre l’host complet des del dashboard.

Els comodins no funcionen

Configura yourbrand.kixo.cc, no pas *.kixo.cc ni kixo.cc. Android i iOS verifiquen l’host exacte que obre la persona.

Transferència entre web i QR

L’SDK web detecta automàticament l’arribada d’un enllaç de Kixo. Fes servir getLinkData() només si el teu web necessita el context de campanya resolt o paràmetres personalitzats dins del seu encaminador.

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);
}

Ofereix «Obre a l’app» al web mòbil

Passa la URL pública completa de l’enllaç retornada per Kixo. El bàner només es mostra al web mòbil i deixa que l’enllaç de Kixo triï entre l’app instal·lada, la botiga o la destinació web.

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

Continua una sessió d’escriptori des d’un codi QR

Si mostres un QR dins del teu web, demana a Kixo que creï una transferència a partir d’un enllaç existent en lloc de construir tu mateix una URL. Kixo fa servir les destinacions d’app i web desades per a aquell enllaç.

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

qrCode.render(handoff.url);

Fes servir els valors retornats per Kixo

Passa l’ID de l’enllaç de Kixo i mostra la URL retornada sense cap canvi. Els params opcionals afegeixen context a la ruta permesa de l’app o del web; no substitueixen la destinació de l’enllaç. No hi passis cap ID d’usuari ni cap ID de dispositiu.

Android App Links

Abans d’editar codi, desa el nom del paquet d’Android i totes les empremtes SHA-256 de signatura de l’app a Apps i configuració. Si Google Play signa la release, afegeix-hi també l’empremta de Play App Signing i qualsevol empremta usada en builds directes o internes.

1. Afegeix l’host al manifest

Posa aquest filtre d’intencions a l’activity que controla la navegació de l’app. Substitueix només el marcador de posició de l’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. Reenvia les obertures en calent

L’SDK de Kixo llegeix un App Link en una arrencada en fred. Quan Android reutilitza una activity existent, passa-li la nova intent perquè l’obertura en calent segueixi el mateix camí d’atribució i encaminament.

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

Reinstal·la l’app després de canviar el manifest, després demana a Android que verifiqui l’host i revisa’n el resultat.

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"

Consell

Que s’obri un selector de navegador sol indicar que l’host exacte, el nom del paquet o l’empremta de signatura no coincideixen. Revisa aquests tres valors abans de tocar el codi de navegació de l’app.

iOS Universal Links

Desa el bundle ID de l’app i l’Apple team ID a Apps i configuració. A Xcode, activa la capacitat Associated Domains al mateix target de l’app i amb la mateixa configuració de signatura que fa servir la build instal·lada.

1. Afegeix el domini associat

applinks:YOUR_EXACT_KIXO_HOST

2. Reenvia els enllaços en fred i en calent

Tria el cicle de vida que fa servir l’app. Tots dos exemples passen la destinació resolta al teu encaminador; Kixo no substitueix la navegació de l’app.

import Kixo

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

3. Verifica iOS

  1. Suprimeix l’app del dispositiu i després instal·la la build signada.
  2. Obre un enllaç real de Kixo des de Notes, Missatges o Safari. No el provis només enganxant-lo a la barra d’adreces de Safari.
  3. Confirma que, en una obertura en fred, l’app s’obre a la pantalla esperada.
  4. Deixa l’app oberta, torna a tocar l’enllaç i confirma l’obertura en calent.
  5. Confirma que l’obertura de l’enllaç apareix a Kixo.

Mantén l’encaminament dins de l’app

Un enllaç de Kixo pot incloure una destinació com /products/42. Assigna els camins coneguts a les teves pantalles i mantén els controls d’accés que ja té l’app. No converteixis el valor resolt en un obridor de URL d’ús general.

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()
    }
}

Dona això a un assistent de programació

Substitueix els cinc marcadors de posició pels valors de Configuració del projecte → Apps i configuració i Enllaços profunds, i enganxa el text complet a Codex, Claude Code, Cursor, Windsurf o un altre assistent de programació.

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

Què no ha d’endevinar l’assistent

L’host amb marca, el nom del paquet, les empremtes de signatura, el bundle ID i l’Apple team ID surten de la teva app i del projecte de Kixo. Un assistent pot connectar el codi, però s’ha d’aturar i indicar que falta un valor en lloc d’inventar-se’l.

Llista de comprovació de release

  • L’host exacte de Kixo és present a la configuració d’Android i iOS.
  • Android indica que l’host està verificat per al paquet de release.
  • Les empremtes de signatura de release estan desades a Kixo.
  • L’entitlement d’iOS és present a la build signada de l’app.
  • Les obertures en fred i en calent arriben a la pantalla esperada.
  • El fallback web o de botiga funciona sense l’app instal·lada.
  • L’obertura de l’enllaç apareix a l’analítica de Kixo.

Guies relacionades