Deep links
Kixo Deep Links sender hver person til den bedst mulige destination. Hvis appen er installeret, åbner det samme brandede HTTPS-link den rigtige skærm i appen. Ellers kan det åbne jeres website eller sende videre til App Store eller Google Play. Operativsystemet håndterer verificerede appåbninger; når linket ender i browseren, bruger Kixo den fallback, der er gemt på linket.
Start i Kixo
Åbn Projektindstillinger → Deep links, opret en adresse, og kopiér opsætningen for den adresse. Hosten i dashboardet er den autoritative kilde til alle kodestykkerne nedenfor.
Sådan åbnes et link
| Personens enhed | Resultat |
|---|---|
| Appen er installeret, og app-link-opsætningen er gyldig | Appen åbner direkte på linkets destination. |
| Appen er ikke installeret | Kixo bruger den website- eller butiksfallback, der er valgt for linket. |
| Browser på computer | Website-fallbacken åbner. |
| Appopsætningen er ikke fuldført | Den sikre fallback åbner i stedet for at vise en app-prompt, der ikke virker. |
Brug den præcise brandede host
En Kixo-linkhost hører til ét projekt og ser fx sådan ud: yourbrand.kixo.cc. Udviklingsprojekter kan bruge en anden Kixo-administreret endelse. Kopiér altid den fulde host fra dashboardet.
Jokertegn virker ikke
Konfigurér yourbrand.kixo.cc, ikke *.kixo.cc og ikke kixo.cc. Android og iOS verificerer den præcise host, som personen åbner.
Website og QR-handoff
Web SDK registrerer automatisk en landing fra et Kixo-link. Brug kun getLinkData(), når jeres website har brug for den løste kampagnekontekst eller brugerdefinerede parametre i sin egen router.
const link = Kixo.getLinkData();
if (link?.params.product_id) {
// URL values are user-controlled. Allowlist them before routing.
router.openProduct(link.params.product_id);
}Tilbyd “Åbn i app” på mobilweb
Send den fulde offentlige link-URL, som Kixo returnerer. Banneret vises kun på mobilweb og lader Kixo-linket vælge mellem den installerede app, butikken eller websitedestinationen.
Kixo.showSmartBanner({
linkId: 'YOUR_KIXO_LINK_ID',
linkUrl: 'https://YOUR_EXACT_KIXO_HOST/link/YOUR_LINK_SLUG',
title: 'Continue in the app',
});Fortsæt en desktopsession fra en QR-kode
Hvis du viser en QR-kode på dit website, skal du bede Kixo om at oprette en handoff til et eksisterende link i stedet for selv at bygge en URL. Kixo bruger de app- og websitedestinationer, der er gemt på linket.
const handoff = await Kixo.createQrHandoff({
linkId: 'YOUR_KIXO_LINK_ID',
params: {
product_id: '42',
},
});
qrCode.render(handoff.url);Brug de værdier, som Kixo returnerer
Send link-id'et fra Kixo, og gengiv den returnerede URL uændret. Valgfrie params tilføjer kontekst til jeres tilladte app- eller websiterute; de erstatter ikke linkets destination. Send ikke et bruger-id eller enheds-id.
Android App Links
Før du redigerer kode, skal du gemme Android-pakkenavnet og alle SHA-256-signeringsfingeraftryk i Apps og opsætning. Hvis Google Play signerer releasen, skal du også tilføje fingeraftrykket for Play App Signing samt alle fingeraftryk, der bruges til direkte eller interne builds.
1. Tilføj værten i manifestet
Sæt dette intent filter på den activity, der styrer appens navigation. Erstat kun pladsholderen for hosten.
<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. Videresend varme åbninger
Kixo SDK læser et App Link ved kold start. Når Android genbruger en eksisterende activity, skal du videresende dens nye intent, så den varme åbning følger samme sti for attribution og routing.
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. Kontrollér Android
Geninstallér appen efter ændringer i manifestet, og bed derefter Android om at verificere hosten. Kontrollér så resultatet.
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
En browservælger betyder normalt, at den præcise host, pakkeidentitet eller signeringsfingeraftryk ikke stemmer. Tjek de tre værdier, før du ændrer appens navigationskode.
iOS Universal Links
Gem appens bundle ID og Apple team ID i Apps og opsætning. I Xcode skal du aktivere Associated Domains på det samme app-target og med den signeringskonfiguration, som bruges af det installerede build.
1. Tilføj det tilknyttede domæne
applinks:YOUR_EXACT_KIXO_HOST2. Videresend kolde og varme åbninger
Vælg den lifecycle, appen bruger. Begge eksempler sender den løste destination videre til jeres egen router; Kixo overtager ikke appens navigation.
import Kixo
WindowGroup {
ContentView()
.onKixoDeepLink { link in
guard link.phase == .resolved else { return }
router.open(link.targetPath ?? link.path)
}
}3. Kontrollér iOS
- Slet appen fra enheden, og installér derefter det signerede build.
- Åbn et rigtigt Kixo-link fra Noter, Beskeder eller Safari. Brug ikke kun en test, hvor du indsætter linket i Safaris adresselinje.
- Bekræft, at et koldt tryk åbner appen på den forventede skærm.
- Lad appen køre, tryk på linket igen, og bekræft den varme åbning.
- Bekræft, at linkåbningen vises i Kixo.
Behold routingen i appen
Et Kixo-link kan have en destination som /products/42. Map kendte stier til jeres egne skærme, og behold appens eksisterende adgangskontrol. Brug ikke den løste værdi som en generel URL-åbner.
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()
}
}Giv dette til en kodeassistent
Erstat de fem pladsholdere med værdier fra Projektindstillinger → Apps & opsætning og Deep links, og indsæt derefter hele briefen i Codex, Claude Code, Cursor, Windsurf eller en anden kodeassistent.
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 changeDet må assistenten ikke gætte på
Den brandede host, pakkeidentiteten, signeringsfingeraftrykkene, bundle ID og Apple team ID kommer fra jeres app og jeres Kixo-projekt. En assistent kan sætte koden op, men skal stoppe og melde en manglende værdi i stedet for at gætte.
Tjekliste før release
- Den præcise Kixo-host er med i opsætningen for både Android og iOS.
- Android rapporterer, at hosten er verificeret for release-pakken.
- Release-signeringsfingeraftrykkene er gemt i Kixo.
- iOS-entitlementen er med i det signerede app-build.
- Kolde og varme åbninger lander på den forventede skærm.
- Website- eller butiksfallbacken virker uden appen installeret.
- Linkåbningen vises i Kixo Analytics.