Direktlinks
Kixo Deep Links leiten jede Person zum bestmöglichen Ziel. Ist die App installiert, öffnet derselbe gebrandete HTTPS-Link die richtige Ansicht in der App. Andernfalls kann er auf deine Website, in den App Store oder zu Google Play als Fallback führen. Eine verifizierte App-Öffnung übernimmt das Betriebssystem; landet der Link im Browser, verwendet Kixo den für diesen Link gespeicherten Fallback.
In Kixo starten
Öffne Projekteinstellungen → Direktlinks, lege eine Adresse an und kopiere die dort angezeigte Konfiguration für diese Adresse. Der Host im Dashboard ist die maßgebliche Quelle für alle folgenden Snippets.
So öffnet sich ein Link
| Gerät der Person | Ergebnis |
|---|---|
| App ist installiert und die App-Link-Konfiguration ist gültig | Die App öffnet sich direkt am Link-Ziel. |
| App ist nicht installiert | Kixo verwendet den für den Link ausgewählten Website- oder Store-Fallback. |
| Desktop-Browser | Der Website-Fallback öffnet sich. |
| App-Konfiguration unvollständig | Der sichere Fallback öffnet sich, statt einen defekten App-Hinweis anzuzeigen. |
Den exakten gebrandeten Host verwenden
Der Host eines Kixo-Links gehört immer genau zu einem Projekt und sieht zum Beispiel so aus: yourbrand.kixo.cc. Für Entwicklungsprojekte kann Kixo eine andere verwaltete Endung verwenden. Kopiere den vollständigen Host immer aus dem Dashboard.
Wildcards funktionieren nicht
Konfiguriere yourbrand.kixo.cc, nicht *.kixo.cc und nicht kixo.cc. Android und iOS verifizieren genau den Host, den die Person öffnet.
Website- und QR-Handoff
Das Web SDK erkennt automatisch, wenn eine Kixo-Link-Landingpage aufgerufen wird. Verwende getLinkData() nur, wenn deine Website den aufgelösten Kampagnenkontext oder benutzerdefinierte Parameter im eigenen Router benötigt.
const link = Kixo.getLinkData();
if (link?.params.product_id) {
// URL values are user-controlled. Allowlist them before routing.
router.openProduct(link.params.product_id);
}„In App öffnen“ im mobilen Web anbieten
Übergib die vollständige öffentliche Link-URL, die Kixo zurückgibt. Das Banner wird nur im mobilen Web angezeigt und lässt den Kixo-Link das passende Ziel wählen: installierte App, Store oder Website.
Kixo.showSmartBanner({
linkId: 'YOUR_KIXO_LINK_ID',
linkUrl: 'https://YOUR_EXACT_KIXO_HOST/link/YOUR_LINK_SLUG',
title: 'Continue in the app',
});Desktop-Sitzung per QR-Code fortsetzen
Für einen QR-Code auf deiner Website solltest du Kixo einen Handoff für einen bestehenden Link erzeugen lassen, statt die URL selbst zusammenzubauen. Kixo verwendet dafür die bei diesem Link hinterlegten Ziele für App und Website.
const handoff = await Kixo.createQrHandoff({
linkId: 'YOUR_KIXO_LINK_ID',
params: {
product_id: '42',
},
});
qrCode.render(handoff.url);Die von Kixo zurückgegebenen Werte verwenden
Übergib die Link-ID aus Kixo und gib die zurückgegebene URL unverändert aus. Optionale params ergänzen Kontext für die freigegebene Route deiner App oder Website; sie ersetzen das Ziel des Links nicht. Übergib keine Nutzer-ID und keine Geräte-ID.
Android App Links
Bevor du Code änderst, hinterlege den Android-Paketnamen und jeden SHA-256-Signatur-Fingerprint der App in Apps & Einrichtung. Wenn Google Play das Release signiert, trage sowohl den Fingerprint aus Play App Signing als auch alle Fingerprints ein, die für direkte oder interne Builds verwendet werden.
1. Host im Manifest eintragen
Setze diesen Intent-Filter auf die Activity, die die App-Navigation steuert. Ersetze nur den Platzhalter für den Host.
<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. Warmstarts weiterleiten
Das Kixo SDK liest einen App Link beim Kaltstart. Wenn Android eine bestehende Activity wiederverwendet, leite den neuen Intent weiter, damit der Warmstart denselben Attributions- und Routing-Pfad verwendet.
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 verifizieren
Installiere die App nach Änderungen am Manifest neu, lass Android den Host verifizieren und prüfe anschließend das Ergebnis.
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"Tipp
Ein Browser-Auswahldialog bedeutet meist, dass Host, Paketname oder Signatur-Fingerprint nicht exakt übereinstimmen. Prüfe diese drei Werte, bevor du den Navigationscode der App änderst.
iOS Universal Links
Hinterlege die Bundle ID der App und die Apple-Team-ID in Apps & Einrichtung. Aktiviere in Xcode die Capability Associated Domains für dasselbe App-Target und dieselbe Signierungskonfiguration, die auch der installierte Build verwendet.
1. Zugehörige Domain hinzufügen
applinks:YOUR_EXACT_KIXO_HOST2. Links bei Kalt- und Warmstarts weiterleiten
Wähle den Lifecycle deiner App. In beiden Beispielen wird das aufgelöste Ziel an deinen eigenen Router übergeben; Kixo ersetzt die App-Navigation nicht.
import Kixo
WindowGroup {
ContentView()
.onKixoDeepLink { link in
guard link.phase == .resolved else { return }
router.open(link.targetPath ?? link.path)
}
}3. iOS verifizieren
- Lösche die App vom Gerät und installiere dann den signierten Build.
- Öffne einen echten Kixo-Link aus Notizen, Nachrichten oder Safari. Füge ihn nicht nur in die Safari-Adressleiste ein und betrachte das als einzigen Test.
- Prüfe, dass ein Tap auf den Link aus dem beendeten Zustand die App auf der erwarteten Ansicht öffnet.
- Lass die App geöffnet, tippe den Link erneut an und prüfe den Warmstart.
- Prüfe, dass die Link-Öffnung in Kixo erscheint.
Routing in der App behalten
Ein Kixo-Link kann ein Ziel wie /products/42 enthalten. Ordne bekannte Pfade den passenden Ansichten deiner App zu und behalte die bestehenden Zugriffskontrollen bei. Verwandle den aufgelösten Wert nicht in einen allgemeinen URL-Öffner.
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()
}
}An einen Coding-Assistenten geben
Ersetze die fünf Platzhalter durch Werte aus Projekteinstellungen → Apps & Einrichtung und Direktlinks und füge das vollständige Briefing dann in Codex, Claude Code, Cursor, Windsurf oder einen anderen Coding-Assistenten ein.
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 changeWas der Assistent nicht erraten darf
Der gebrandete Host, der Paketname, die Signatur-Fingerprints, die Bundle ID und die Apple-Team-ID stammen aus deiner App und deinem Kixo-Projekt. Ein Assistent kann den Code verdrahten, sollte aber bei fehlenden Werten stoppen und sie melden, statt etwas zu erfinden.
Checkliste für das Release
- Der exakte Kixo-Host ist in der Android- und iOS-Konfiguration eingetragen.
- Android meldet den Host für das Release-Paket als verifiziert.
- Die Signatur-Fingerprints des Release-Builds sind in Kixo gespeichert.
- Das iOS-Entitlement ist im signierten App-Build enthalten.
- Kalt- und Warmstarts landen auf der erwarteten Ansicht.
- Der Website- oder Store-Fallback funktioniert auch ohne installierte App.
- Die Link-Öffnung erscheint in Kixo Analytics.