Přejít na dokumentaci

Deep linky

Kixo Deep Links pošlou každého uživatele na nejlepší dostupný cíl. Pokud je aplikace nainstalovaná, stejný brandovaný HTTPS odkaz otevře správnou obrazovku v aplikaci. Jinak se může otevřít váš web, App Store nebo fallback do Google Play. Ověřené otevření aplikace řeší operační systém; pokud se odkaz dostane do prohlížeče, Kixo použije fallback uložený pro daný odkaz.

Začněte v Kixo

Otevřete Nastavení projektu → Deep linky, vytvořte adresu a zkopírujte nastavení zobrazené pro tuto adresu. Host v dashboardu je rozhodující zdroj pro všechny ukázky níže.

Jak se odkaz otevře

Zařízení uživateleVýsledek
Aplikace je nainstalovaná a App Links jsou nastavené správněAplikace se otevře přímo v cíli odkazu.
Aplikace není nainstalovanáKixo použije fallback na web nebo do obchodu vybraný pro daný odkaz.
Prohlížeč na desktopuOtevře se fallback na web.
Nastavení aplikace není kompletníMísto nefunkční výzvy k otevření aplikace se otevře bezpečný fallback.

Použijte přesný brandovaný host

Host odkazu Kixo patří vždy jen k jednomu projektu a vypadá například takto: yourbrand.kixo.cc. Vývojové projekty mohou používat jinou koncovku spravovanou Kixo. Z dashboardu vždy kopírujte celý host.

Zástupné znaky nefungují

Nastavte yourbrand.kixo.cc, ne *.kixo.cc ani kixo.cc. Android a iOS ověřují přesný host, který uživatel otevře.

Web a QR handoff

Web SDK automaticky rozpozná příchod z odkazu Kixo. getLinkData() použijte jen tehdy, když váš web potřebuje ve vlastním routeru vyhodnocený kontext kampaně nebo vlastní parametry.

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

Na mobilním webu nabídněte „Otevřít v aplikaci“

Předejte kompletní veřejnou URL odkazu, kterou vrátí Kixo. Banner se zobrazuje jen na mobilním webu a nechá odkaz Kixo vybrat nainstalovanou aplikaci, obchod nebo cíl na webu.

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

Pokračování relace z desktopu přes QR kód

Pokud QR kód zobrazujete na svém webu, nechte Kixo vytvořit handoff pro existující odkaz, místo abyste URL skládali sami. Kixo použije cíle pro aplikaci a web uložené u daného odkazu.

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

qrCode.render(handoff.url);

Použijte hodnoty vrácené z Kixo

Předejte ID odkazu z Kixo a vrácenou URL vykreslete beze změny. Volitelné params přidají kontext pro povolenou trasu aplikace nebo webu; nenahrazují cíl odkazu. Nepředávejte user ID ani device ID.

Android App Links

Než upravíte kód, uložte do Aplikace a nastavení název balíčku Android a všechny SHA-256 otisky podpisu aplikace. Pokud produkční verzi podepisuje Google Play, přidejte i otisk Play App Signing a všechny otisky používané pro přímé nebo interní buildy.

1. Přidejte hostitele do manifestu

Tento intent filter přidejte k activity, která řídí navigaci aplikace. Nahraďte pouze zástupný 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. Předejte odkazy při otevření běžící aplikace

Kixo SDK načte App Link při studeném startu. Když Android znovu použije existující activity, předejte nový intent dál, aby teplé otevření prošlo stejnou atribuční a směrovací cestou.

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. Ověřte Android

Po změně manifestu aplikaci přeinstalujte, potom nechte Android ověřit host a zkontrolujte výsledek.

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"

Tip

Nabídka výběru prohlížeče obvykle znamená, že nesedí přesný host, název balíčku nebo otisk podpisu. Než začnete měnit kód navigace v aplikaci, zkontrolujte tyto tři hodnoty.

iOS Universal Links

Do Aplikace a nastavení uložte bundle ID aplikace a Apple team ID. V Xcode zapněte capability Associated Domains na stejném targetu aplikace a se stejnou konfigurací podepisování, jakou používá nainstalovaný build.

1. Přidejte odpovídající doménu

applinks:YOUR_EXACT_KIXO_HOST

2. Předejte odkazy při studeném spuštění i za běhu

Vyberte životní cyklus, který vaše aplikace používá. V obou ukázkách se vyhodnocený cíl předává vašemu routeru; Kixo navigaci aplikace nenahrazuje.

import Kixo

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

3. Ověřte iOS

  1. Odinstalujte aplikaci ze zařízení a potom nainstalujte podepsaný build.
  2. Otevřete skutečný odkaz Kixo z Poznámek, Zpráv nebo Safari. Nevkládejte ho do adresního řádku Safari jako jediný test.
  3. Ověřte, že klepnutí při vypnuté aplikaci otevře správnou obrazovku.
  4. Nechte aplikaci běžet, klepněte na odkaz znovu a ověřte teplé otevření.
  5. Ověřte, že se otevření odkazu zobrazí v Kixo.

Směrování nechte uvnitř aplikace

Odkaz Kixo může nést cíl, například /products/42. Známé cesty namapujte na vlastní obrazovky a zachovejte stávající kontroly přístupu v aplikaci. Z vyhodnocené hodnoty nedělejte univerzální otvírač 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()
    }
}

Předejte to asistentovi pro psaní kódu

Nahraďte pět zástupných hodnot údaji z Nastavení projektu → Aplikace a nastavení a Deep linky a celý podklad vložte do Codex, Claude Code, Cursor, Windsurf nebo jiného asistenta pro psaní kódu.

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

Co asistent nesmí domýšlet

Brandovaný host, název balíčku, otisky podpisu, bundle ID a Apple team ID vycházejí z vaší aplikace a projektu Kixo. Asistent může doplnit implementaci, ale pokud některá hodnota chybí, musí se zastavit a nahlásit to, ne si ji domýšlet.

Kontrolní seznam před releasem

  • Přesný host Kixo je uvedený v nastavení pro Android i iOS.
  • Android hlásí host jako ověřený pro produkční balíček.
  • Otisky produkčního podepisování jsou uložené v Kixo.
  • Entitlement pro iOS je součástí podepsaného buildu aplikace.
  • Při studeném i teplém otevření se zobrazí očekávaná obrazovka.
  • Fallback na web nebo do obchodu funguje i bez nainstalované aplikace.
  • Otevření odkazu se zobrazí v analytice Kixo.

Související návody