Ligazóns profundas
Kixo Deep Links leva cada persoa ao mellor destino dispoñible. Se a app está instalada, a mesma ligazón HTTPS coa túa marca abre a pantalla correcta dentro da app. Se non, pode abrir o teu sitio web ou usar App Store ou Google Play como fallback. O sistema operativo encárgase da apertura verificada da app; cando a ligazón chega ao navegador, Kixo aplica o fallback gardado para esa ligazón.
Comeza en Kixo
Abre Configuración do proxecto → Ligazóns profundas, crea un enderezo e copia a configuración que aparece para ese enderezo. O host do dashboard é a referencia válida para todos os fragmentos que veñen a continuación.
Como se abre unha ligazón
| Dispositivo da persoa | Resultado |
|---|---|
| App instalada e configuración do app link válida | A app abre directamente no destino da ligazón. |
| App non instalada | Kixo usa o fallback de sitio web ou de tenda definido para a ligazón. |
| Navegador de escritorio | Ábrese o fallback do sitio web. |
| Configuración da app incompleta | Ábrese o fallback seguro en vez de mostrar un aviso roto para abrir a app. |
Usa o host exacto coa túa marca
O host dunha ligazón de Kixo pertence a un único proxecto e ten un formato como yourbrand.kixo.cc. Os proxectos de desenvolvemento poden usar outra terminación xestionada por Kixo. Copia sempre o host completo desde o dashboard.
Os comodíns non funcionan
Configura yourbrand.kixo.cc, non *.kixo.cc nin kixo.cc. Android e iOS verifican o host exacto que abre a persoa.
Transferencia entre web e QR
O Web SDK recoñece automaticamente cando unha visita chega desde unha ligazón de Kixo. Usa getLinkData() só se o teu sitio web necesita no seu propio router o contexto de campaña resolto ou parámetros personalizados.
const link = Kixo.getLinkData();
if (link?.params.product_id) {
// URL values are user-controlled. Allowlist them before routing.
router.openProduct(link.params.product_id);
}Ofrece “Abrir na app” na web móbil
Pasa a URL pública completa devolta por Kixo. O banner só se mostra na web móbil e deixa que a ligazón de Kixo elixa entre a app instalada, a tenda ou o sitio web.
Kixo.showSmartBanner({
linkId: 'YOUR_KIXO_LINK_ID',
linkUrl: 'https://YOUR_EXACT_KIXO_HOST/link/YOUR_LINK_SLUG',
title: 'Continue in the app',
});Continúa unha sesión de escritorio desde un código QR
Se mostras un QR dentro do teu sitio web, pídelle a Kixo que cree unha transferencia a partir dunha ligazón existente en vez de construír ti a URL. Kixo usa os destinos de app e de sitio web gardados para esa ligazón.
const handoff = await Kixo.createQrHandoff({
linkId: 'YOUR_KIXO_LINK_ID',
params: {
product_id: '42',
},
});
qrCode.render(handoff.url);Usa os valores devoltos por Kixo
Pasa o ID da ligazón de Kixo e amosa a URL devolta sen cambiala. Os params opcionais engaden contexto para unha ruta da túa app ou do teu sitio web incluída na allowlist; non substitúen o destino da ligazón. Non pases un ID de usuario nin un ID de dispositivo.
Android App Links
Antes de editar código, garda en Apps e configuración o nome do paquete de Android e todas as pegadas SHA-256 de sinatura da app. Se Google Play asina a versión de release, engade tamén a pegada de Play App Signing, ademais de calquera pegada usada en compilacións directas ou internas.
1. Engade o host ao manifesto
Pon este intent filter na activity que controla a navegación da app. Substitúe unicamente o marcador de posición do host.
<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. Reenvía as aperturas en quente
O SDK de Kixo le o App Link nun arranque en frío. Cando Android reutiliza unha activity xa existente, reenvía o novo intent para que a apertura en quente siga o mesmo fluxo de atribución e enrutamento.
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
Despois de cambiar o manifest, reinstala a app e pídelle a Android que verifique o host; logo revisa o resultado.
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"Consello
Se aparece un selector de navegador, normalmente é porque non coincide o host exacto, o nome do paquete ou a pegada de sinatura. Revisa eses tres valores antes de tocar o código de navegación da app.
iOS Universal Links
Garda en Apps e configuración o bundle ID da app e o Apple team ID. En Xcode, activa a capability Associated Domains no mesmo target da app e coa mesma configuración de sinatura que usa a compilación instalada.
1. Engade o dominio asociado
applinks:YOUR_EXACT_KIXO_HOST2. Reenvía as ligazóns en frío e en quente
Escolle o ciclo de vida que usa a app. Nos dous exemplos, o destino resolto entrégase ao teu propio router; Kixo non substitúe a navegación da app.
import Kixo
WindowGroup {
ContentView()
.onKixoDeepLink { link in
guard link.phase == .resolved else { return }
router.open(link.targetPath ?? link.path)
}
}3. Verifica iOS
- Elimina a app do dispositivo e instala despois a compilación asinada.
- Abre unha ligazón real de Kixo desde Notes, Messages ou Safari. Non a pegues na barra de enderezos de Safari como única proba.
- Confirma que unha apertura en frío leva á app á pantalla esperada.
- Deixa a app aberta, toca a ligazón outra vez e confirma a apertura en quente.
- Confirma que a apertura da ligazón aparece en Kixo.
Mantén o enrutamento dentro da app
Unha ligazón de Kixo pode levar un destino como /products/42. Asocia as rutas coñecidas ás túas propias pantallas e conserva os controis de acceso que xa ten a app. Non converta o valor resolto nun abridor de URL de propósito xeral.
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()
}
}Dálle isto a un asistente de código
Substitúe os cinco marcadores de posición polos valores de Configuración do proxecto → Aplicacións e configuración e Ligazóns profundas, e pega a instrución completa en Codex, Claude Code, Cursor, Windsurf ou noutro asistente de código.
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 changeO que o asistente non debe adiviñar
O host coa túa marca, o nome do paquete, as pegadas de sinatura, o bundle ID e o Apple team ID saen da túa app e do teu proxecto de Kixo. Un asistente pode conectar o código, pero debe parar e indicar que falta un valor en vez de inventalo.
Lista de comprobación de release
- O host exacto de Kixo está presente na configuración de Android e iOS.
- Android indica que o host está verificado para o paquete de release.
- As pegadas de sinatura de release están gardadas en Kixo.
- O entitlement de iOS está presente na compilación asinada da app.
- As aperturas en frío e en quente chegan á pantalla esperada.
- O fallback de sitio web ou de tenda funciona aínda que a app non estea instalada.
- A apertura da ligazón aparece na analítica de Kixo.