Дълбоки връзки
Kixo Deep Links изпращат всеки човек към най-подходящата налична цел. Ако приложението е инсталирано, същата брандирана HTTPS връзка отваря правилния екран в приложението. В противен случай може да отвори сайта ви, App Store или Google Play като резервен вариант. Операционната система обработва отварянето на потвърденото приложение; когато връзката стигне до браузъра, Kixo прилага резервния вариант, запазен за тази връзка.
Започнете в Kixo
Отворете Настройки на проекта → Дълбоки връзки, създайте адрес и копирайте показаната за него настройка. Хостът в таблото за управление е източникът на истина за всички фрагменти по-долу.
Как се отваря връзката
| Устройството на човека | Резултат |
|---|---|
| Приложението е инсталирано и настройката на връзките към приложението е валидна | Приложението се отваря директно на целта от връзката. |
| Приложението не е инсталирано | Kixo използва резервния вариант към сайта или магазина, избран за връзката. |
| Настолен браузър | Отваря се резервният вариант към сайта. |
| Настройката на приложението не е завършена | Отваря се безопасният резервен вариант, вместо да се показва неработещ подканващ екран за приложение. |
Използвайте точния брандиран хост
Хостът на връзка от Kixo принадлежи към един проект и изглежда като yourbrand.kixo.cc. Проектите за разработка може да използват различен домейн, управляван от Kixo. Винаги копирайте целия хост от таблото за управление.
Заместващи символи не работят
Настройте yourbrand.kixo.cc, а не *.kixo.cc и не kixo.cc. Android и iOS проверяват точния хост, който човекът отваря.
Сайт и QR предаване
Web SDK автоматично разпознава посещение от Kixo връзка. Използвайте getLinkData() само когато сайтът ви има нужда от получения контекст на кампанията или от персонализирани параметри в собствения си рутер.
const link = Kixo.getLinkData();
if (link?.params.product_id) {
// URL values are user-controlled. Allowlist them before routing.
router.openProduct(link.params.product_id);
}Предложете „Open in app“ в мобилната уеб версия
Подайте пълния публичен URL на връзката, върнат от Kixo. Банерът се показва само в мобилната уеб версия и позволява на връзката от Kixo да избере инсталираното приложение, магазина или целта в сайта.
Kixo.showSmartBanner({
linkId: 'YOUR_KIXO_LINK_ID',
linkUrl: 'https://YOUR_EXACT_KIXO_HOST/link/YOUR_LINK_SLUG',
title: 'Continue in the app',
});Продължете сесия от настолен браузър чрез QR код
За QR код, показан в сайта ви, поискайте Kixo да създаде предаване за съществуваща връзка, вместо сами да конструирате URL. Kixo използва целите за приложението и сайта, запазени за тази връзка.
const handoff = await Kixo.createQrHandoff({
linkId: 'YOUR_KIXO_LINK_ID',
params: {
product_id: '42',
},
});
qrCode.render(handoff.url);Използвайте стойностите, върнати от Kixo
Подайте ID на връзката от Kixo и покажете върнатия URL без промени. Незадължителните params добавят контекст за маршрут от разрешения списък във вашето приложение или сайт; те не заменят целта на връзката. Не подавайте потребителско ID или ID на устройство.
Android App Links
Преди да редактирате кода, запишете името на Android пакета и всеки SHA-256 отпечатък от подписването на приложението в Приложения и настройка. Ако изданието се подписва от Google Play, добавете отпечатъка от Play App Signing, както и всеки отпечатък, използван за директни или вътрешни компилации.
1. Добавете хоста в manifest файла
Поставете този intent filter върху activity-то, което управлява навигацията в приложението. Заменете само мястото за хоста.
<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. Препратете топлите отваряния
Kixo SDK прочита App Link при студен старт. Когато Android използва повторно съществуващо activity, подайте новия intent нататък, така че топлото отваряне да следва същия път за атрибуция и маршрутизиране.
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. Потвърдете Android
След промяна в manifest файла преинсталирайте приложението, после накарайте Android да провери хоста и прегледайте резултата.
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"Съвет
Появата на избор за браузър обикновено означава, че точният хост, името на пакета или отпечатъкът на подписа не съвпадат. Проверете тези три стойности, преди да пипате кода за навигация в приложението.
iOS Universal Links
Запишете bundle ID на приложението и Apple team ID в Приложения и настройка. В Xcode включете възможността Associated Domains за същия app target и конфигурация за подписване, използвани от инсталираната компилация.
1. Добавете свързания домейн
applinks:YOUR_EXACT_KIXO_HOST2. Препратете студените и топлите отваряния
Изберете жизнения цикъл, който използва приложението. И в двата примера получената крайна цел се подава към вашия рутер; Kixo не заменя навигацията в приложението.
import Kixo
WindowGroup {
ContentView()
.onKixoDeepLink { link in
guard link.phase == .resolved else { return }
router.open(link.targetPath ?? link.path)
}
}3. Потвърдете iOS
- Изтрийте приложението от устройството, след което инсталирайте подписаната компилация.
- Отворете реална Kixo връзка от Notes, Messages или Safari. Не я поставяйте в адресната лента на Safari като единствен тест.
- Потвърдете, че докосване при затворено приложение го отваря на очаквания екран.
- Оставете приложението отворено, докоснете връзката отново и потвърдете топлото отваряне.
- Потвърдете, че отварянето на връзката се отчита в Kixo.
Запазете маршрутизирането в приложението
Връзка от Kixo може да съдържа крайна цел като /products/42. Насочвайте познатите пътища към собствените си екрани и запазете съществуващите проверки за достъп в приложението. Не превръщайте получената стойност в универсален отваряч за 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()
}
}Дайте това на асистент за програмиране
Заменете петте места със стойности от Настройки на проекта → Приложения и настройка и Дълбоки връзки, след което поставете целия бриф в Codex, Claude Code, Cursor, Windsurf или друг асистент за програмиране.
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Какво асистентът не бива да отгатва
Брандираният хост, името на пакета, отпечатъците от подписването, bundle ID и Apple team ID идват от вашето приложение и проекта в Kixo. Асистентът може да свърже кода, но трябва да спре и да отчете липсваща стойност, вместо да измисля такава.
Контролен списък за издаване
- Точният Kixo хост присъства в настройките за Android и iOS.
- Android отчита хоста като потвърден за пакета за издаване.
- Отпечатъците за подписване на изданието са запазени в Kixo.
- iOS entitlement присъства в подписаната компилация на приложението.
- Студеното и топлото отваряне водят до очаквания екран.
- Резервният вариант към сайта или магазина работи без инсталирано приложение.
- Отварянето на връзката се вижда в аналитиката на Kixo.