Chuqur havolalar
Kixo Deep Links har bir foydalanuvchini eng mos mavjud manzilga yuboradi. Ilova o‘rnatilgan bo‘lsa, shu brendlangan HTTPS havola ilovadagi to‘g‘ri ekranni ochadi. Aks holda sayt, App Store yoki Google Play fallback’i ochilishi mumkin. Tasdiqlangan ilova ochilishini operatsion tizim boshqaradi; havola brauzerga tushsa, Kixo shu havola uchun saqlangan fallback’ni qo‘llaydi.
Kixo’dan boshlang
Loyiha sozlamalari → Chuqur havolalar ni oching, manzil yarating va shu manzil uchun ko‘rsatilgan sozlamani nusxalang. Dashboarddagi host quyidagi barcha snippetlar uchun asosiy manbadir.
Havola qanday ochiladi
| Foydalanuvchi qurilmasi | Natija |
|---|---|
| Ilova o‘rnatilgan va app link sozlamasi to‘g‘ri | Ilova to‘g‘ridan to‘g‘ri havola manzilida ochiladi. |
| Ilova o‘rnatilmagan | Kixo havola uchun tanlangan sayt yoki do‘kon fallback’idan foydalanadi. |
| Desktop brauzer | Sayt fallback’i ochiladi. |
| Ilova sozlamasi to‘liq emas | Buzilgan ilova so‘rovi o‘rniga xavfsiz fallback ochiladi. |
Aynan brendlangan hostdan foydalaning
Kixo havolasi hosti bitta loyihaga tegishli bo‘ladi va yourbrand.kixo.cc ko‘rinishida bo‘ladi. Development loyihalarda Kixo boshqaradigan boshqa qo‘shimcha ishlatilishi mumkin. Har doim dashboarddagi to‘liq hostni nusxalang.
Wildcard’lar ishlamaydi
*.kixo.cc ham emas, kixo.cc ham emas — yourbrand.kixo.cc ni sozlang. Android va iOS foydalanuvchi ochadigan aynan hostni tasdiqlaydi.
Sayt va QR handoff
Web SDK Kixo havolasi landingini avtomatik taniydi. getLinkData() dan faqat saytingizga o‘z router’ida yechilgan campaign konteksti yoki maxsus parametrlar kerak bo‘lsa foydalaning.
const link = Kixo.getLinkData();
if (link?.params.product_id) {
// URL values are user-controlled. Allowlist them before routing.
router.openProduct(link.params.product_id);
}Mobil web’da “Open in app”ni ko‘rsating
Kixo qaytargan to‘liq public link URL’ni uzating. Banner faqat mobil web’da ko‘rinadi va Kixo havolasiga o‘rnatilgan ilova, do‘kon yoki sayt manzilini tanlash imkonini beradi.
Kixo.showSmartBanner({
linkId: 'YOUR_KIXO_LINK_ID',
linkUrl: 'https://YOUR_EXACT_KIXO_HOST/link/YOUR_LINK_SLUG',
title: 'Continue in the app',
});Desktop sessiyasini QR kod orqali davom ettiring
Saytingiz ichida ko‘rsatiladigan QR uchun URL’ni o‘zingiz tuzmang. Buning o‘rniga Kixo’dan mavjud havola uchun handoff yaratishni so‘rang. Kixo shu havola uchun saqlangan ilova va sayt manzillaridan foydalanadi.
const handoff = await Kixo.createQrHandoff({
linkId: 'YOUR_KIXO_LINK_ID',
params: {
product_id: '42',
},
});
qrCode.render(handoff.url);Kixo qaytargan qiymatlardan foydalaning
Kixo’dan havola ID sini uzating va qaytgan URL’ni o‘zgartirmasdan chiqaring. Ixtiyoriy params allowlist qilingan ilova yoki sayt yo‘li uchun kontekst qo‘shadi; ular havolaning manzilini almashtirmaydi. Foydalanuvchi ID sini ham, qurilma ID sini ham uzatmang.
Android App Links
Kodga o‘zgartirish kiritishdan oldin Android paket nomi va barcha SHA-256 imzolash fingerprintlarini Ilovalar va sozlamalar ichiga saqlang. Agar release buildni Google Play imzolasa, Play App Signing fingerprintini ham, to‘g‘ridan to‘g‘ri yoki ichki buildlarda ishlatiladigan fingerprintlarni ham qo‘shing.
1. Hostni manifestga qo‘shing
Bu intent filter’ni ilova navigatsiyasiga mas’ul activity’ga qo‘ying. Faqat host placeholder’ini almashtiring.
<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. Warm open’larni yo‘naltiring
Kixo SDK sovuq startdagi App Link’ni o‘qiydi. Android mavjud activity’ni qayta ishlatsa, yangi intent’ni uzating — shunda iliq ochilish ham ayni attributsiya va routing yo‘lidan o‘tadi.
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’ni tekshiring
Manifestni o‘zgartirgach, ilovani qayta o‘rnating, so‘ng Android’dan hostni tasdiqlashni so‘rang va natijani tekshiring.
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"Maslahat
Brauzer tanlash oynasi odatda host, paket nomi yoki imzolash fingerprinti aynan mos kelmayotganini bildiradi. Ilova navigatsiyasi kodini o‘zgartirishdan oldin shu uchalasini tekshirib chiqing.
iOS Universal Links
Ilovaning bundle ID si va Apple team ID sini Ilovalar va sozlamalar ichiga saqlang. Xcode’da Associated Domains imkoniyatini aynan o‘rnatilgan build ishlatadigan ilova target’i va imzolash konfiguratsiyasida yoqing.
1. Bog‘langan domenni qo‘shing
applinks:YOUR_EXACT_KIXO_HOST2. Cold va warm linklarni yo‘naltiring
Ilovada ishlatiladigan lifecycle’ni tanlang. Har ikki misolda ham yechilgan manzil o‘z routing tizimingizga uzatiladi; Kixo ilova navigatsiyasini almashtirmaydi.
import Kixo
WindowGroup {
ContentView()
.onKixoDeepLink { link in
guard link.phase == .resolved else { return }
router.open(link.targetPath ?? link.path)
}
}3. iOS’ni tekshiring
- Ilovani qurilmadan o‘chirib tashlang, keyin imzolangan buildni o‘rnating.
- Haqiqiy Kixo havolasini Notes, Messages yoki Safari’dan oching. Uni yagona test sifatida Safari manzil satriga kiritmang.
- Sovuq bosishda ilova kutilgan ekranda ochilishini tasdiqlang.
- Ilovani ochiq qoldiring, havolani yana bosing va iliq ochilishni tasdiqlang.
- Havola ochilishi Kixo’da ko‘rinishini tasdiqlang.
Routing’ni ilova ichida saqlang
Kixo havolasi /products/42 kabi manzilni olib yurishi mumkin. Tanish yo‘llarni o‘z ekranlaringizga bog‘lang va ilovadagi amaldagi kirish tekshiruvlarini saqlang. Yechilgan qiymatni umumiy maqsadli URL ochgichga aylantirmang.
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()
}
}Buni kod yordamchisiga bering
Beshta placeholder’ni Loyiha sozlamalari → Ilovalar va sozlash va Chuqur havolalar dagi qiymatlar bilan almashtiring, keyin tayyor brief’ni Codex, Claude Code, Cursor, Windsurf yoki boshqa kod yordamchisiga joylang.
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 changeYordamchi taxmin qilmasligi kerak bo‘lgan qiymatlar
Brendlangan host, paket nomi, imzolash fingerprintlari, bundle ID va Apple team ID ilovangiz hamda Kixo loyihangizdan olinadi. Yordamchi kodni ulab berishi mumkin, ammo yetishmayotgan qiymatni o‘ylab topmasdan, to‘xtab bu haqda xabar berishi kerak.
Release uchun tekshiruv ro‘yxati
- Aynan Kixo hosti Android va iOS sozlamalarida ko‘rsatilgan.
- Android host release paketi uchun tasdiqlanganini ko‘rsatadi.
- Release imzolash fingerprintlari Kixo’da saqlangan.
- iOS entitlement imzolangan ilova buildida mavjud.
- Sovuq va iliq ochilishlar kutilgan ekranga olib boradi.
- Ilova o‘rnatilmagan bo‘lsa ham, sayt yoki do‘kon fallback’i ishlaydi.
- Havola ochilishi Kixo analytics’da ko‘rinadi.