Ligações profundas
Os Kixo Deep Links enviam cada pessoa para o melhor destino disponível. Se a aplicação estiver instalada, o mesmo link HTTPS com a sua marca abre o ecrã certo na aplicação. Caso contrário, pode abrir o seu website, a App Store ou o fallback do Google Play. O sistema operativo trata da abertura verificada da aplicação; quando o link chega ao navegador, a Kixo aplica o fallback guardado para esse link.
Começar na Kixo
Abra Definições do projeto → Ligações profundas, crie um endereço e copie a configuração mostrada para esse endereço. O host no dashboard é a referência para todos os snippets abaixo.
Como um link abre
| Dispositivo da pessoa | Resultado |
|---|---|
| Aplicação instalada e App Link configurado corretamente | A aplicação abre diretamente no destino do link. |
| Aplicação não instalada | A Kixo usa o fallback para website ou loja selecionado para o link. |
| Navegador no computador | Abre o fallback do website. |
| Configuração da aplicação incompleta | Abre o fallback seguro em vez de surgir um pedido para abrir a aplicação que não funciona. |
Use o host com marca exato
O host de um link Kixo pertence a um único projeto e tem um aspeto semelhante a yourbrand.kixo.cc. Os projetos de desenvolvimento podem usar uma terminação diferente gerida pela Kixo. Copie sempre o host completo do dashboard.
Os wildcards não funcionam
Configure yourbrand.kixo.cc, e não *.kixo.cc nem kixo.cc. O Android e o iOS verificam o host exato que a pessoa abre.
Transição entre web e QR
O Web SDK reconhece automaticamente uma chegada a partir de um link Kixo. Use getLinkData() apenas quando o seu website precisar do contexto de campanha resolvido ou de parâmetros personalizados no seu próprio router.
const link = Kixo.getLinkData();
if (link?.params.product_id) {
// URL values are user-controlled. Allowlist them before routing.
router.openProduct(link.params.product_id);
}Disponibilize “Abrir na aplicação” na web móvel
Passe o URL público completo do link devolvido pela Kixo. O banner só é mostrado na web móvel e permite ao link Kixo escolher a aplicação instalada, a loja ou o destino no website.
Kixo.showSmartBanner({
linkId: 'YOUR_KIXO_LINK_ID',
linkUrl: 'https://YOUR_EXACT_KIXO_HOST/link/YOUR_LINK_SLUG',
title: 'Continue in the app',
});Continuar uma sessão no computador a partir de um QR code
Se o QR for apresentado no seu website, peça à Kixo para criar uma transição para um link existente em vez de construir manualmente um URL. A Kixo usa os destinos da aplicação e do website guardados para esse link.
const handoff = await Kixo.createQrHandoff({
linkId: 'YOUR_KIXO_LINK_ID',
params: {
product_id: '42',
},
});
qrCode.render(handoff.url);Use os valores devolvidos pela Kixo
Passe o ID do link da Kixo e apresente o URL devolvido sem alterações. Os params opcionais acrescentam contexto à rota permitida da sua aplicação ou do seu website; não substituem o destino do link. Não passe um ID de utilizador nem um ID de dispositivo.
Android App Links
Antes de editar código, guarde o nome do pacote Android e todas as impressões digitais SHA-256 da assinatura da aplicação em Aplicações e configuração. Se o Google Play assinar a release, adicione também a impressão digital do Play App Signing, bem como qualquer impressão digital usada em builds diretas ou internas.
1. Adicionar o host ao manifesto
Coloque este intent filter na activity que controla a navegação da aplicação. Substitua apenas o marcador 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. Encaminhar aberturas a quente
O Kixo SDK lê um App Link no arranque a frio. Quando o Android reutiliza uma activity existente, encaminhe o novo intent para que a abertura a quente siga o mesmo fluxo de atribuição e encaminhamento.
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. Verificar no Android
Reinstale a aplicação depois de alterar o manifesto e, em seguida, peça ao Android para verificar o host e inspecione 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"Sugestão
Se surgir um seletor de navegador, normalmente significa que o host exato, o nome do pacote ou a impressão digital da assinatura não coincide. Verifique primeiro esses três valores antes de mexer no código de navegação da aplicação.
iOS Universal Links
Guarde o bundle ID da aplicação e o Apple team ID em Aplicações e configuração. No Xcode, ative a capability Domínios associados no mesmo target da aplicação e na mesma configuração de assinatura usada pela build instalada.
1. Adicionar o domínio associado
applinks:YOUR_EXACT_KIXO_HOST2. Encaminhar aberturas a frio e a quente
Escolha o ciclo de vida usado pela aplicação. Em ambos os exemplos, o destino resolvido é entregue ao seu próprio router; a Kixo não substitui a navegação da aplicação.
import Kixo
WindowGroup {
ContentView()
.onKixoDeepLink { link in
guard link.phase == .resolved else { return }
router.open(link.targetPath ?? link.path)
}
}3. Verificar no iOS
- Apague a aplicação do dispositivo e instale a build assinada.
- Abra um link Kixo real a partir de Notas, Mensagens ou Safari. Não o cole na barra de endereço do Safari como único teste.
- Confirme que um toque a frio abre a aplicação no ecrã esperado.
- Deixe a aplicação aberta, toque novamente no link e confirme a abertura a quente.
- Confirme que a abertura do link aparece na Kixo.
Mantenha o encaminhamento dentro da aplicação
Um link Kixo pode incluir um destino como /products/42. Mapeie os caminhos conhecidos para os ecrãs da sua aplicação e mantenha as verificações de acesso já existentes. Não transforme o valor resolvido num abridor genérico de URL.
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()
}
}Dar isto a um assistente de programação
Substitua os cinco marcadores pelos valores de Definições do projeto → Aplicações e configuração e Ligações profundas e, em seguida, cole as instruções completas no Codex, Claude Code, Cursor, Windsurf ou noutro assistente de programação.
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 assistente não deve presumir
O host com marca, o nome do pacote, as impressões digitais da assinatura, o bundle ID e o Apple team ID vêm da sua aplicação e do projeto Kixo. Um assistente pode tratar da integração no código, mas deve parar e assinalar um valor em falta em vez de o inventar.
Lista de verificação da release
- O host Kixo exato está presente na configuração de Android e iOS.
- O Android indica o host como verificado para o pacote de release.
- As impressões digitais da assinatura de release estão guardadas na Kixo.
- O entitlement de iOS está presente na build assinada da aplicação.
- As aberturas a frio e a quente chegam ao ecrã esperado.
- O fallback para website ou loja funciona sem a aplicação instalada.
- A abertura do link aparece na analítica da Kixo.