Linki głębokie
Kixo Deep Links kierują każdą osobę do najlepszego dostępnego miejsca docelowego. Jeśli aplikacja jest zainstalowana, ten sam firmowy link HTTPS otworzy właściwy ekran w aplikacji. W przeciwnym razie może otworzyć Twoją stronę, App Store albo Google Play. Zweryfikowane otwarcie aplikacji obsługuje system operacyjny; gdy link trafi do przeglądarki, Kixo zastosuje fallback zapisany dla tego linku.
Zacznij w Kixo
Otwórz Ustawienia projektu → Linki bezpośrednie, utwórz adres i skopiuj konfigurację wyświetloną dla tego adresu. Host z dashboardu jest źródłem prawdy dla wszystkich poniższych fragmentów.
Jak otwiera się link
| Urządzenie użytkownika | Wynik |
|---|---|
| Aplikacja jest zainstalowana, a konfiguracja App Links jest poprawna | Aplikacja otwiera się od razu we właściwym miejscu docelowym linku. |
| Aplikacja nie jest zainstalowana | Kixo użyje fallbacku strony lub sklepu wybranego dla tego linku. |
| Przeglądarka na komputerze | Otwiera się fallback strony. |
| Konfiguracja aplikacji jest niepełna | Zamiast uszkodzonego komunikatu o otwarciu aplikacji otwiera się bezpieczny fallback. |
Użyj dokładnego firmowego hosta
Host linku Kixo jest przypisany do jednego projektu i wygląda jak yourbrand.kixo.cc. Projekty deweloperskie mogą używać innej końcówki zarządzanej przez Kixo. Zawsze kopiuj pełny host z dashboardu.
Wildcardy nie działają
Skonfiguruj yourbrand.kixo.cc, a nie *.kixo.cc ani kixo.cc. Android i iOS weryfikują dokładnie ten host, który otwiera użytkownik.
Przekazanie między stroną a kodem QR
Web SDK automatycznie rozpoznaje wejście z linku Kixo. Użyj getLinkData() tylko wtedy, gdy Twoja strona potrzebuje rozpoznanego kontekstu kampanii albo własnych parametrów we własnym routerze.
const link = Kixo.getLinkData();
if (link?.params.product_id) {
// URL values are user-controlled. Allowlist them before routing.
router.openProduct(link.params.product_id);
}Pokaż „Otwórz w aplikacji” w mobilnej wersji strony
Przekaż pełny publiczny URL linku zwrócony przez Kixo. Baner wyświetla się tylko w mobilnej wersji strony i pozwala linkowi Kixo wybrać zainstalowaną aplikację, sklep albo docelową stronę.
Kixo.showSmartBanner({
linkId: 'YOUR_KIXO_LINK_ID',
linkUrl: 'https://YOUR_EXACT_KIXO_HOST/link/YOUR_LINK_SLUG',
title: 'Continue in the app',
});Kontynuuj sesję na komputerze za pomocą kodu QR
Jeśli kod QR wyświetlasz w swojej witrynie, poproś Kixo o utworzenie przekazania dla istniejącego linku zamiast samodzielnie składać URL. Kixo użyje docelowego adresu aplikacji i strony zapisanego dla tego linku.
const handoff = await Kixo.createQrHandoff({
linkId: 'YOUR_KIXO_LINK_ID',
params: {
product_id: '42',
},
});
qrCode.render(handoff.url);Użyj wartości zwróconych przez Kixo
Przekaż ID linku z Kixo i wyrenderuj zwrócony URL bez zmian. Opcjonalne params dodają kontekst do ścieżki aplikacji lub strony z listy dozwolonych, ale nie zastępują adresu docelowego linku. Nie przekazuj ID użytkownika ani ID urządzenia.
Android App Links
Zanim zaczniesz edytować kod, zapisz nazwę pakietu Android i każdy odcisk podpisu aplikacji SHA-256 w Aplikacje i konfiguracja. Jeśli wersję produkcyjną podpisuje Google Play, dodaj zarówno odcisk Play App Signing, jak i każdy odcisk używany w buildach bezpośrednich lub wewnętrznych.
1. Dodaj host do manifestu
Dodaj ten intent filter do aktywności, która odpowiada za nawigację w aplikacji. Podmień tylko placeholder hosta.
<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. Przekaż ciepłe otwarcia
SDK Kixo odczytuje App Link przy zimnym starcie. Gdy Android ponownie używa istniejącej aktywności, przekaż do niej nowy intent, aby ciepłe otwarcie przechodziło tą samą ścieżką atrybucji i routingu.
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. Zweryfikuj Android
Po zmianie manifestu zainstaluj aplikację ponownie, a następnie zleć Android weryfikację hosta i sprawdź wynik.
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"Wskazówka
Okno wyboru przeglądarki zwykle oznacza, że nie zgadza się dokładny host, nazwa pakietu albo odcisk podpisu. Zanim zaczniesz zmieniać kod nawigacji w aplikacji, sprawdź te trzy wartości.
iOS Universal Links
Zapisz bundle ID aplikacji i Apple team ID w Aplikacje i konfiguracja. W Xcode włącz capability Powiązane domeny dla tego samego targetu aplikacji i tej samej konfiguracji podpisywania, której używa zainstalowany build.
1. Dodaj powiązaną domenę
applinks:YOUR_EXACT_KIXO_HOST2. Przekaż linki przy zimnym i ciepłym otwarciu
Wybierz sposób obsługi cyklu życia używany w aplikacji. W obu przykładach rozpoznany adres docelowy trafia do Twojego routera; Kixo nie zastępuje nawigacji w aplikacji.
import Kixo
WindowGroup {
ContentView()
.onKixoDeepLink { link in
guard link.phase == .resolved else { return }
router.open(link.targetPath ?? link.path)
}
}3. Zweryfikuj iOS
- Usuń aplikację z urządzenia, a potem zainstaluj podpisany build.
- Otwórz prawdziwy link Kixo z Notes, Messages albo Safari. Nie ograniczaj testu wyłącznie do wklejenia go w pasek adresu Safari.
- Potwierdź, że zimne otwarcie uruchamia aplikację na właściwym ekranie.
- Pozostaw aplikację uruchomioną, stuknij link ponownie i potwierdź ciepłe otwarcie.
- Potwierdź, że otwarcie linku pojawia się w Kixo.
Pozostaw routing po stronie aplikacji
Link Kixo może zawierać adres docelowy, np. /products/42. Mapuj znane ścieżki na własne ekrany i zachowaj dotychczasowe mechanizmy kontroli dostępu w aplikacji. Nie używaj rozpoznanej wartości jako uniwersalnego otwieracza 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()
}
}Przekaż to asystentowi programowania
Zastąp pięć placeholderów wartościami z Ustawienia projektu → Aplikacje i konfiguracja i Linki bezpośrednie, a następnie wklej cały brief do Codex, Claude Code, Cursor, Windsurf albo innego asystenta programowania.
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 changeCzego asystent nie może zgadywać
Firmowy host, nazwa pakietu, odciski podpisu, bundle ID i Apple team ID pochodzą z Twojej aplikacji i projektu Kixo. Asystent może podłączyć kod, ale powinien zatrzymać się i zgłosić brakującą wartość, zamiast ją wymyślać.
Lista kontrolna przed wydaniem
- Dokładny host Kixo jest wpisany w konfiguracji Android i iOS.
- Android zgłasza host jako zweryfikowany dla pakietu wydaniowego.
- Odciski podpisu wersji produkcyjnej są zapisane w Kixo.
- Uprawnienie iOS jest obecne w podpisanym buildzie aplikacji.
- Zimne i ciepłe otwarcie prowadzi do właściwego ekranu.
- Fallback strony lub sklepu działa bez zainstalowanej aplikacji.
- Otwarcie linku pojawia się w analityce Kixo.