Verwenden und Konfigurieren von Deep-Links in E-Mails und SMS deeplinks
Deep-Links helfen Ihnen, Empfänger von einer E-Mail oder SMS-Nachricht zu einem bestimmten Bildschirm oder Inhalt in Ihrer Mobile App zu führen. Dadurch können Benutzer direkt zum gewünschten In-App-Erlebnis gelangen, ohne sie über einen Webbrowser oder einen App Store weiterzuleiten, sodass der Journey relevant und markenintern bleibt.
Wenn Ihre Empfänger auf den Deep-Link klicken, werden sie direkt zum gewünschten In-App-Inhalt weitergeleitet - vorausgesetzt, Sie haben Folgendes abgeschlossen:
-
die Konfigurationsschritte in Journey Optimizer;
-
Die Implementierung von Mobile ) für iOS und Android in Ihrer Mobile App.
/ee/v1/mclick/*), um Kompatibilität und Klick-Tracking sicherzustellen.Erstellen von Deep-Links authoring
E-Mail authoring-email
Für E-Mail-Nachrichten haben Sie zwei Möglichkeiten, einen Deep-Link einzufügen:
-
E-Mail an Designer: Stellen Sie sicher dass das Linktracking aktiviert . Wählen Sie das Element aus, das Sie verknüpfen möchten (Text, Schaltfläche oder Bild), klicken Sie Link einfügen in der kontextuellen Symbolleiste und wählen Sie Deeplink aus, um Ihre Deep-Link-URL einzugeben. Weitere Informationen zum Einfügen von Links
-
Personalization-Editor (Code): Fügen Sie den Deep-Link mithilfe des folgenden Ausschnitts direkt in HTML ein:
code language-html <a class="arc-link" data-nl-type="DEEPLINK" href="<<deeplink_url>>" id="acr-link-7821368" style="text-decoration:underline;" target="_blank" data-tracking-type="DEEPLINK">Click Here</a>note tip TIP Ersetzen Sie <<deeplink_url>>durch Ihre tatsächliche Deep-Link-URL und verwenden Sie zur Vermeidung von Konflikten für jeden Block eine eindeutigeid.
SMS authoring-sms
Für SMS werden Deep-Links mit der Hilfsfunktion URL im Personalisierungseditor erstellt. In (diesem Abschnitt) erfahren Sie wie Sie Links zu SMS-Inhalten .
Verwenden Sie die folgende Syntax, um Deep-Links in SMS-Inhalte einzufügen:
{{url originalUrl='<<url>>' type='DEEPLINK' action='CLICK'}}
<<url>> durch Ihre tatsächliche Deep-Link-URL.Konfiguration in Journey Optimizer configuration
Um Deep-Links in E-Mails und SMS für Ihre Mobile Apps verwenden zu können, führen Sie die folgenden Konfigurationsschritte aus.
-
Delegieren Sie in Journey Optimizer die Subdomain, für die Deep-Linking aktiviert ist. Weitere Informationen
-
Hosten Sie die AASA-Datei für iOS und die assetLinks.json-Datei für Android in Ihrer Subdomain. Wenden Sie sich mit den folgenden Informationen an die 🔗-Kundenunterstützung von Adobe oder Ihren Adobe-Support-Mitarbeiter:
-
Für iOS (AASA):
- Delegierte Subdomain
- App-Bundle-ID
-
Für Android (assetLinks.json):
- Delegierte Subdomain
- App-Bundle-ID
- SHA-256-Zertifikat-Fingerabdruck
-
/ee/v1/mclick/*, die von Adobe gehostet und aufgelöst werden.Mobile-App-Implementierung mobile-implementation
In diesem Abschnitt wird erläutert, wie Sie mobile Deep-Links mit Adobe Journey Optimizer implementieren, sodass in einem typischen HTTPS-Setup (universelle Links und App-Links) eine einzelne URL:
- einen bestimmten Bildschirm in der App öffnen, wenn die App installiert ist, oder
- Öffnen Sie Ihre Website als Fallback, wenn die App nicht installiert ist.
Wenn das Linktracking für Ihre Nachricht aktiviert ist, verfolgt Journey Optimizer diese Klicks weiterhin, bezieht sie in das Reporting ein und kann sie in Inhaltsexperimenten“ verwenden wenn Sie sie für die Nachricht ausführen.
In diesem Abschnitt finden Sie allgemeine Implementierungsmuster für Deep-Links. Die genaue Einrichtung hängt von Ihrer App-Architektur und dem Routing-Framework ab.
iOS (Universelle Links) ios-implementation
-
Wählen Sie in Xcode Ihr Ziel über Signing & Capabilities > + Capability > Associated Domains aus.
-
Fügen Sie Einträge für Ihre delegierten Subdomains hinzu, z. B.:
code language-text applinks:www.mybusiness.com applinks:data.email.mybusiness.com -
Verarbeiten Sie universelle Links in der App und rufen Sie den ursprünglichen Link aus der Antwortkopfzeile ab.
accordion Beispiel: iOS 13+ mit Szenen code language-swift class SceneDelegate: UIResponder, UIWindowSceneDelegate { func scene(_ scene: UIScene, continue userActivity: NSUserActivity) { guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL else { return } handleUniversalLink(url: incomingURL) } private func handleUniversalLink(url: URL) { // Only handle AJO tracked mobile clicks guard url.host == "data.email.mybusiness.com", url.path.hasPrefix("/ee/v1/mclick") else { // Could also handle direct www.mybusiness.com links here return } resolveTrackedUrlAndRoute(url) } private func resolveTrackedUrlAndRoute(_ trackedUrl: URL) { var request = URLRequest(url: trackedUrl) request.httpMethod = "GET" URLSession.shared.dataTask(with: request) { _, response, error in guard error == nil, let httpResponse = response as? HTTPURLResponse, let locationValue = httpResponse.allHeaderFields["Location"] as? String, let finalUrl = URL(string: locationValue) else { return } DispatchQueue.main.async { self.routeToDestination(finalUrl) } }.resume() } private func routeToDestination(_ url: URL) { // Example: map URL paths to screens // https://www.mybusiness.com/dashboard/offers/coupons // → OffersViewController for Coupons } }
mclick-URL durchführen und die Location-Kopfzeile lesen und dann basierend auf der endgültigen-URL weiterleiten.mclick-URL in Safari. Das widerspricht dem Zweck der Deep-Linking.Android (App-Links) android-implementation
-
Fügen Sie den Intent-Filter für App-Links in Ihrer Android-App hinzu.
code language-xml <activity android:name=".DeepLinkActivity" 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="data.email.mybusiness.com" android:pathPrefix="/ee/v1/mclick" /> </intent-filter> </activity> -
Implementieren Sie den Deep-Link-Handler.
accordion In Kotlin: code language-kotlin class DeepLinkActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val trackedUri = intent?.data if (trackedUri == null || trackedUri.host != "data.email.mybusiness.com" || !trackedUri.path.orEmpty().startsWith("/ee/v1/mclick")) { finish() return } resolveTrackedUrlAndRoute(trackedUri) } private fun resolveTrackedUrlAndRoute(trackedUri: Uri) { lifecycleScope.launch(Dispatchers.IO) { try { val finalUrl = followRedirect(trackedUri.toString()) withContext(Dispatchers.Main) { routeToDestination(finalUrl) finish() } } catch (e: Exception) { // Optionally log error, fallback to browser finish() } } } private fun followRedirect(trackedUrl: String): Uri { val client = OkHttpClient.Builder() .followRedirects(false) // We want to read Location ourselves .build() val request = Request.Builder() .url(trackedUrl) .get() .build() client.newCall(request).execute().use { response -> val location = response.header("Location") ?: throw IllegalStateException("Missing Location header") return Uri.parse(location) } } private fun routeToDestination(finalUri: Uri) { // Example: interpret https://www.mybusiness.com/dashboard/offers/coupons // and open the correct Activity / Fragment } }
mclick-URL aufrufen und die Location-Kopfzeile verwenden, um das endgültige Ziel zu bestimmen.followRedirects(false), damit Sie die Umleitungshandhabung steuern und Analysen bei Bedarf genau protokollieren können.Empfohlene Verfahren deeplink-best-practices
- Stabile Pfade verwenden: Routen bevorzugen, die gegenüber Änderungen der App-Benutzeroberfläche robust sind (z. B.
/account/ordersstatt/tab/3/view/2). - Konto für getrackte Pfade: Wenn das Linktracking aktiviert ist, kann der geklickte Link getrackte Pfadmuster verwenden (z. B.
/ee/v1/mclick/). Stellen Sie sicher, dass Ihr Router die endgültige URL analysieren kann, nachdem der getrackte Link aufgelöst wurde. - Parameter vorhersehbar halten: Definieren eines konsistenten Parameterschemas (z. B.
?orderId=12345). - Vermeiden Sie vertrauliche Daten in URLs: Fügen Sie keine Geheimnisse oder persönlichen Daten direkt in die Deep-Link-URL ein.
- Deep-Link testen: Führen Sie einen Testversand durch und klicken Sie auf den Deep-Link auf einem Gerät, auf dem die App installiert ist.
- Auf echten Geräten validieren: Universal Links und das Verhalten bei der Auflösung getrackter Links sind zuverlässiger bei der Validierung auf physischen Geräten als auf Simulatoren.
- App-seitiges Routing validieren: Wenn der Deep-Link nicht den erwarteten Bildschirm öffnet, validieren Sie das App-seitige Routing und das URL-Format (Host/Pfad/Abfrage und URL-Codierung).
- Beachten Sie die App-Initialisierung: Das Verhalten von App-Links/universellen Links ist am zuverlässigsten, nachdem die App mindestens einmal installiert und geöffnet wurde.
Fehlerbehebung und häufig gestellte Fragen troubleshooting-faq
- Stellen Sie sicher, dass die URL den Host- und Pfadmustern entspricht, für die Ihre App registriert ist, einschließlich getrackter Klickpfade, wenn das Linktracking aktiviert ist (z. B. Pfade unter
/ee/v1/mclick/). - Bestätigen Sie bei universellen Links von iOS und Links zur Android-App, dass die Domain-Zuordnung (AASA/
assetlinks.json) korrekt konfiguriert und erreichbar ist. - Testen auf einem realen Gerät (Simulatoren/Emulatoren können sich für die Link-Zuordnung anders verhalten).
- Bestätigen Sie, dass der App-seitige Router den URL-Pfad/die Abfrage korrekt analysiert.
- URL-Kodierung überprüfen: reservierte Zeichen sollten URL-kodiert sein.
- Überprüfen Sie, ob Parameternamen und -werte mit den Erwartungen des Routers übereinstimmen.
- Wenn dieselbe HTTPS-URL von Ihrer Website bereitgestellt werden kann, kann der Link eine Web-Seite als Ausweichlösung öffnen, wenn die App nicht installiert ist (konfigurieren Sie Ihr Web-Ziel und das Routing entsprechend).
-
Erstellen Sie einen Korrekturabzug mit einem Deep-Link und klicken Sie darauf auf iOS- und Android-Geräten (installierte und nicht installierte Szenarien).
-
Validieren:
- Der endgültige Wert der E-Mail- oder SMS-Relation (Host/Pfad/Abfrage)
- Die Verknüpfung auf Betriebssystemebene (bei Verwendung von universellen Links/App-Links)
- Das In-App-Routing-Ergebnis
assetlinks.json-Konfiguration für jede Subdomain an, die die Funktion unterstützen soll.appname://path)?appname://path), der empfohlene Ansatz ist jedoch ein universeller Link oder ein App-Link (https://), der dem HTTPS-basierten Setup in den Konfigurationsabschnitten und den Implementierungsabschnitten auf dieser Seite entspricht.Location-Header zurückgegeben wird, wenn Ihre App eine GET auf der mclick URL durchführt, sodass Sie sie für In-App-Analysen verwenden können./ee/v1/click/ URLs?mclick-Fluss gehandhabt.