Ir para a documentação

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 pessoaResultado
Aplicação instalada e App Link configurado corretamenteA aplicação abre diretamente no destino do link.
Aplicação não instaladaA Kixo usa o fallback para website ou loja selecionado para o link.
Navegador no computadorAbre o fallback do website.
Configuração da aplicação incompletaAbre 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.

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

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.

js
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.

js
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.

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. 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.

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. 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.

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"

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_HOST

2. 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

  1. Apague a aplicação do dispositivo e instale a build assinada.
  2. 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.
  3. Confirme que um toque a frio abre a aplicação no ecrã esperado.
  4. Deixe a aplicação aberta, toque novamente no link e confirme a abertura a quente.
  5. 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.

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

O 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.

Guias relacionados