Verwenden und Konfigurieren von Deeplinks in E-Mails und SMS deeplinks

Auf dieser Seite: Erfahren Sie, wie Sie Deeplinks in E-Mail- und SMS-Inhalten erstellen, in Adobe Journey Optimizer konfigurieren und die getrackten Links in Ihren iOS- und Android-Apps verarbeiten können, damit die Empfängerinnen und Empfänger auf dem richtigen In-App-Bildschirm landen.

Deeplinks helfen Ihnen, Empfängerinnen und Empfänger von einer E-Mail oder SMS-Nachricht zu einem bestimmten Bildschirm oder Inhalt in Ihrer App zu führen. Dadurch können Benutzende direkt zum gewünschten In-App-Erlebnis gelangen, ohne dass sie über einen Webbrowser oder einen App Store weitergeleitet werden, sodass die Journey relevant und markenkonform bleibt.

Wenn Ihre Empfängerinnen und Empfänger auf den Deeplink klicken, werden sie direkt zum gewünschten In-App-Inhalt weitergeleitet – vorausgesetzt, Sie haben Folgendes abgeschlossen:

NOTE
Adobe Journey Optimizer unterstützt Deeplinking für iOS und Android mithilfe von getrackten URLs (/ee/v1/mclick/*), um Kompatibilität und Klick-Tracking sicherzustellen.
CAUTION
Deeplinks funktionieren nur, wenn Sie die Schritte Konfiguration und App-Implementierung auf dieser Seite abgeschlossen haben.

E-Mail authoring-email

Für E-Mail-Nachrichten haben Sie zwei Möglichkeiten, einen Deeplink einzufügen:

  • E-Mail-Designer: Stellen Sie sicher, dass das Linktracking aktiviert ist. Wählen Sie das Element aus, das Sie verknüpfen möchten (Text, Schaltfläche oder Bild), klicken Sie auf Link einfügen in der kontextuellen Symbolleiste und wählen Sie Deeplink aus, um Ihre Deeplink-URL einzugeben. Weitere Informationen zum Einfügen von Links

  • Personalisierungseditor (Code): Fügen Sie den Deeplink 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 Deeplink-URL und verwenden Sie zur Vermeidung von Konflikten für jeden Block eine eindeutige id.

SMS authoring-sms

Für SMS werden Deeplinks mit der URL-Helper-Funktion im Personalisierungseditor erstellt. Informationen zum Hinzufügen von Links zu SMS-Inhalten finden Sie in diesem Abschnitt.

Verwenden Sie die folgende Syntax, um Deeplinks in SMS-Inhalte einzufügen:

{{url originalUrl='<<url>>' type='DEEPLINK' action='CLICK'}}
TIP
Ersetzen Sie <<url>> durch Ihre tatsächliche Deeplink-URL.

Konfiguration in Journey Optimizer configuration

Um Deeplinks in E-Mails und SMS für Ihre Apps verwenden zu können, führen Sie die folgenden Konfigurationsschritte aus.

NOTE
Dieser Abschnitt gilt für die Verwendung universeller Links (iOS) und App-Links (Android) (HTTPS-basierte Deeplinks).
  1. Delegieren Sie in Journey Optimizer die Subdomain, für die Deeplinking aktiviert ist. Weitere Informationen

  2. 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 ](https://helpx.adobe.com/de/enterprise/admin-guide.html/enterprise/using/support-for-experience-cloud.ug.html){target=“_blank”}Adobe-Kundenunterstützung[ oder Ihren Adobe-Support-Kontakt:

    • Für iOS (AASA):

      • Delegierte Subdomain
      • App-Paket-ID
    • Für Android (assetLinks.json):

      • Delegierte Subdomain
      • App-Paket-ID
      • SHA-256-Zertifikat-Fingerabdruck
IMPORTANT
Deeplinking über die Adobe-Infrastruktur gilt, wenn das Linktracking für Ihre Nachricht aktiviert ist – in den Mail-Tracking-Einstellungen oder im Abschnitt Aktionstracking für SMS-Kampagnen. Getrackte Deeplink-Klicks verwenden URLs unter /ee/v1/mclick/*, die von Adobe gehostet und aufgelöst werden.
Bei nicht getrackten Links wird die URL nicht über Adobe-Systeme neu geschrieben. Sie müssen universelle Links oder App-Links auf Ihren eigenen Domains und beim Hosting konfigurieren, damit diese Links Ihre App wie vorgesehen öffnen.

App-Implementierung mobile-implementation

In diesem Abschnitt wird erläutert, wie Sie mobile Deeplinks mit Adobe Journey Optimizer implementieren, sodass in einem typischen HTTPS-Setup (universelle Links und App-Links) eine einzelne URL Folgendes kann:

  • einen bestimmten Bildschirm in der App öffnen, wenn die App installiert ist, oder
  • Ihre Website als Fallback öffnen, wenn die App nicht installiert ist.

Wenn das Linktracking für Ihre Nachricht aktiviert ist, trackt 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 Deeplinks. Das genaue Setup hängt von Ihrer App-Architektur und dem Routing-Framework ab.

  1. Wählen Sie in Xcode Ihr Ziel über Signing & Capabilities > + Capability > Associated Domains aus.

  2. 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
    
  3. Verarbeiten Sie universelle Links in der App und rufen Sie den ursprünglichen Link aus dem Antwort-Header 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
        }
    }
    
IMPORTANT
Die App muss einen GET für die mclick-URL durchführen und den Location-Header lesen und dann basierend auf der endgültigen-URL weiterleiten.
Öffnen Sie nicht einfach die mclick-URL in Safari. Das widerspricht dem Zweck des Deeplinkings.
  1. 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>
    
  2. Implementieren Sie den Deeplink-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
        }
    }
    
IMPORTANT
Wie iOS muss die App die mclick-URL aufrufen und den Location-Header verwenden, um das endgültige Ziel zu bestimmen.
Verwenden Sie followRedirects(false), damit Sie die Umleitungshandhabung steuern und Analysen bei Bedarf genau protokollieren können.
Die Routing-Logik ist App-spezifisch. Definieren Sie eine klare Zuordnung von URLs zu Bildschirmen.
  • Stabile Pfade verwenden: Routen bevorzugen, die gegenüber Änderungen der App-Benutzeroberfläche robust sind (z. B. /account/orders statt /tab/3/view/2).
  • Getrackte Pfade berücksichtigen: Wenn das Linktracking aktiviert ist, kann der angeklickte 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 Sie ein konsistentes Parameterschema (z. B. ?orderId=12345).
  • Vertrauliche Daten in URLs vermeiden: Fügen Sie keine Geheimnisse oder personenbezogenen Daten direkt in die Deeplink-URL ein.
  • Deeplink testen: Führen Sie einen Testversand durch und klicken Sie auf den Deeplink auf einem Gerät, auf dem die App installiert ist.
  • Auf echten Geräten validieren: Universelle Links und das Verhalten bei der Auflösung getrackter Links sind bei der Validierung auf physischen Geräten zuverlässiger als auf Simulatoren.
  • App-seitiges Routing validieren: Wenn der Deeplink nicht den erwarteten Bildschirm öffnet, validieren Sie das App-seitige Routing und das URL-Format (Host/Pfad/Abfrage und URL-Codierung).
  • Die App-Initialisierung beachten: 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

Die App wird nicht geöffnet, wenn ich auf den Deeplink tippe.
  • 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).
Die App wird geöffnet, navigiert jedoch nicht zum erwarteten Bildschirm.
  • Bestätigen Sie, dass der App-seitige Router den URL-Pfad/die Abfrage korrekt analysiert.
  • URL-Codierung überprüfen: reservierte Zeichen sollten URL-codiert sein.
  • Überprüfen Sie, ob Parameternamen und -werte mit den Erwartungen des Routers übereinstimmen.
Was passiert, wenn die App nicht installiert ist?
  • Wenn dieselbe HTTPS-URL von Ihrer Website bereitgestellt werden kann, kann der Link eine Web-Seite als Fallback öffnen, wenn die App nicht installiert ist (konfigurieren Sie Ihr Web-Ziel und das Routing entsprechend).
Wie binde ich Sonderzeichen sicher in Parameter ein?
URL-codierte Abfrageparameterwerte. Dadurch werden Bereitstellungs- und Rendering-Probleme reduziert und Parsing-Fehler in der App vermieden.
Wie sollten wir End-to-End testen?
  • Erstellen Sie einen Testversand mit einem Deeplink und klicken Sie auf iOS- und Android-Geräten darauf (installierte und nicht installierte Szenarien).

  • Validieren:

    • Der endgültige Wert des E-Mail- oder SMS-Links (Host/Pfad/Abfrage)
    • Die Verknüpfung auf Betriebssystemebene (bei Verwendung von universellen Links/App-Links)
    • Das In-App-Routing-Ergebnis
Ich habe eine App, aber verschiedene Subdomains für die Organisation. Sollte ich für jede Subdomain die Erstellung von AASA und assetLinks.json anfordern?
Ja. Wenn Sie für jede delegierte Subdomain Deeplinking wünschen, fordern Sie die AASA- und assetlinks.json-Konfiguration für jede Subdomain an, die die Funktion unterstützen soll.
Sollte die von mir konfigurierte URL ein Deeplinking-Format verwenden (z. B. appname://path)?
Sie können ein benutzerdefiniertes URL-Schema verwenden (z. B. 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.
Sind UTM-Parameter für die URL in der App für Analysen verfügbar?
Ja. UTM-Parameter, die Sie in Journey Optimizer konfigurieren, werden in die endgültige URL aufgenommen, die im Location-Header zurückgegeben wird, wenn Ihre App einen GET-Vorgang für die mclick-URL durchführt, sodass Sie sie für In-App-Analysen verwenden können.
Was ist das Benutzererlebnis für /ee/v1/click/-URLs?
Der Link wird im Standard-Webbrowser des Geräts geöffnet (Standard-Klick-Tracking-Verhalten) und nicht wie ein App-Deeplink durch den auf dieser Seite beschriebenen mclick-Fluss gehandhabt.
recommendation-more-help
journey-optimizer-help