Använda och konfigurera djupa länkar i e-postmeddelanden och SMS deeplinks

Med hjälp av detaljerade länkar kan du ta mottagare från ett e-postmeddelande eller SMS till en viss skärm eller innehållsuppgift i din mobilapp. Det hjälper människor att nå den avsedda upplevelsen direkt i appen, utan att de dirigeras via en webbläsare eller en appbutik, så att resan förblir relevant och varumärkesskyddad.

När dina mottagare klickar på den djupa länken hämtas de direkt till det avsedda innehållet i appen - förutsatt att du har slutfört:

NOTE
Adobe Journey Optimizer stöder djuplänkning för både iOS och Android med spårade URL:er (/ee/v1/mclick/*) för att säkerställa kompatibilitet och klickspårning.

Skapa djuplänkar authoring

CAUTION
Djupa länkar fungerar inte om du inte har slutfört stegen för konfiguration och implementering av mobilappar på den här sidan.

E-post authoring-email

För e-postmeddelanden har du två alternativ för att infoga en djup länk:

  • Skicka e-post till Designer: Kontrollera att länkspårning är aktiverat. Markera elementet som du vill länka (text, knapp eller bild), klicka på Insert link i det sammanhangsberoende verktygsfältet och välj Deeplink för att ange din URL för djuplänk. Läs mer om att infoga länkar

  • Personalization-redigerare (kod): Infoga den djupa länken direkt i HTML med följande kodutdrag:

    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
    Ersätt <<deeplink_url>> med din faktiska djuplänk-URL och använd en unik id för varje block för att undvika konflikter.

SMS authoring-sms

För SMS skapas djupa länkar med hjälpfunktionen URL i personaliseringsredigeraren. Lär dig hur du lägger till länkar till SMS-innehåll i det här avsnittet.

Använd följande syntax för att infoga djupa länkar i SMS-innehåll:

{{url originalUrl='<<url>>' type='DEEPLINK' action='CLICK'}}
TIP
Ersätt <<url>> med din faktiska URL för djuplänk.

Konfiguration i Journey Optimizer configuration

Om du vill kunna använda djuplänkar i e-postmeddelanden och SMS för dina mobilappar ska du slutföra konfigurationsstegen nedan.

NOTE
Det här avsnittet gäller när du använder universella länkar (iOS) och applänkar (Android) (HTTPS-baserade djuplänkar).
  1. I Journey Optimizer delegerar du den underdomän där djuplänkning är aktiverad. Läs mer

  2. Lägg AASA-filen för iOS och filen assetLinks.json för Android i din underdomän. Kontakta Adobe kundtjänst eller din Adobe-representant med information nedan:

    • För iOS (AASA):

      • Delegerad underdomän
      • Programpaket-ID
    • För Android (assetLinks.json):

      • Delegerad underdomän
      • Programpaket-ID
      • SHA-256-certifikatfingeravtryck
IMPORTANT
Djuplänkning via Adobe-infrastruktur tillämpas när länkspårning är aktiverat för ditt meddelande - i inställningarna för e-postspårning eller i avsnittet Actions tracking för SMS-kampanjer. Spårade djuplänksklickningar använder URL:er under /ee/v1/mclick/*, som Adobe är värd för och löser.
För ej spårade-länkar skrivs URL-adressen inte om via Adobe-system. Du måste konfigurera universallänkar eller applänkar på dina egna domäner och värdtjänster så att länkarna öppnar ditt program som det är tänkt.

Implementering av mobilappar mobile-implementation

I det här avsnittet beskrivs hur du implementerar mobila djuplänkar med Adobe Journey Optimizer så att en enda URL kan:

  • Öppna en specifik skärm i mobilappen när appen installeras, eller
  • Öppna webbplatsen som en reserv när appen inte är installerad.

När länkspårning är aktiverat för ditt meddelande fortsätter Journey Optimizer att spåra dessa klick, inkludera dem i rapporter och kan använda dem i innehållsexperiment om du kör dem i meddelandet.

I det här avsnittet finns vanliga implementeringsmönster för djupa länkar. Din exakta konfiguration beror på apparkitekturen och routningsramverket.

  1. I Xcode väljer du ditt mål genom Signing & Capabilities > + Capability > Associated Domains.

  2. Lägg till poster för dina delegerade underdomäner, till exempel:

    code language-text
    applinks:www.mybusiness.com
    applinks:data.email.mybusiness.com
    
  3. Hantera universella länkar i appen och få den ursprungliga länken från svarshuvudet.

    accordion
    Exempel: iOS 13+ med scener
    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
Appen måste utföra en GETmclick-URL:en och läsa Location-rubriken, och sedan skicka den baserat på final -URL:en.
Öppna inte bara URL:en mclick i Safari; som motverkar syftet med djuplänkning.
  1. Lägg till app Link-intent-filter i din Android-app.

    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. Implementera hanteraren för djup länk.

    accordion
    I 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
Precis som iOS måste appen anropa URL:en mclick och använda rubriken Location för att fastställa det slutliga målet.
Använd followRedirects(false) så att du styr omdirigeringshantering och kan logga analyser korrekt om det behövs.
Routningslogiken är appspecifik; Definiera en tydlig mappning från URL:er till skärmar.
  • Använd stabila sökvägar: Föredrar vägar som är resistenta mot ändringar i appanvändargränssnittet (till exempel /account/orders i stället för /tab/3/view/2).
  • Konto för spårade banor: När länkspårning är aktiverat kan den klickade länken använda spårade banmönster (till exempel /ee/v1/mclick/). Kontrollera att routern kan tolka den slutliga URL:en efter att den spårade länken har lösts.
  • Håll parametrarna förutsägbara: Definiera ett konsekvent parameterschema (till exempel ?orderId=12345).
  • Undvik känsliga data i URL:er: Lägg inte in hemligheter eller personuppgifter direkt i URL:en för djuplänken.
  • Testa din djuplänk: Skicka ett bevis och klicka på den djupa länken på en enhet där appen är installerad.
  • Validera på riktiga enheter: Universallänkar och beteenden för spårad länkupplösning är mer tillförlitliga att validera på fysiska enheter i stället för simulatorer.
  • Verifiera routning på appsidan: Om djuplänken inte öppnar den förväntade skärmen validerar du routningen på programsidan och URL-formatet (värd/sökväg/fråga och URL-kodning).
  • Kom ihåg appinitiering: Beteendet Applänkar/universallänkar är mest tillförlitligt efter att appen har installerats och öppnats minst en gång.

Felsökning och vanliga frågor troubleshooting-faq

Appen öppnas inte när jag trycker på den djupa länken.
  • Kontrollera att URL:en matchar värd- och sökvägsmönstren som appen är registrerad för att hantera, inklusive spårade klicksökvägar när länkspårning är aktiverat (till exempel sökvägar under /ee/v1/mclick/).
  • För universallänkar för iOS och Android applänkar bekräftar du att domänassociationen (AASA / assetlinks.json) är korrekt konfigurerad och nåbar.
  • Testa på en riktig enhet (simulatorer/emulatorer kan bete sig annorlunda för länkkoppling).
Appen öppnas men navigerar inte till den förväntade skärmen.
  • Bekräfta att routern på programsidan tolkar URL-sökvägen/frågan korrekt.
  • Kontrollera URL-kodning: reserverade tecken ska vara URL-kodade.
  • Validera parameternamn och värden matchar vad routern förväntar sig.
Vad händer om appen inte är installerad?
  • Om samma HTTPS-URL kan hanteras av din webbplats kan länken öppna en webbsida som en reserv när appen inte är installerad (konfigurera ditt webbmål och routning därefter).
Hur lägger jag in specialtecken i parametrarna?
URL-koda frågeparametervärden. Detta minskar problem med leverans och återgivning och förhindrar att fel analyseras i appen.
Hur ska vi testa från början till slut?
  • Skapa ett korrektur med en djuplänk och klicka på det på iOS- och Android-enheter (installerade och inte installerade scenarier).

  • Validera:

    • Det slutgiltiga värdet för e-post eller SMS-länk (värd/sökväg/fråga)
    • Associationen på operativsystemnivå (om du använder universallänkar/applänkar)
    • Resultatet för routning i appen
Jag har ett program men olika underdomäner för organisationen. Bör jag begära att AASA och assetLinks.json skapas för varje underdomän?
Ja. Om du vill länka djupt i varje delegerad underdomän begär du AASA- och assetlinks.json-konfiguration för varje underdomän som ska ha stöd för funktionen.
Ska URL:en jag konfigurerar använda ett format för djup länkning (till exempel appname://path)?
Du kan använda ett anpassat URL-schema (till exempel appname://path), men den rekommenderade metoden är en universell länk eller applänk (https://) som matchar den HTTPS-baserade inställningen i konfigurations- och implementeringsavsnitten på den här sidan.
Kommer UTM-parametrar på URL:en att vara tillgängliga i mobilappen för analys?
Ja. UTM-parametrar som du konfigurerar i Journey Optimizer inkluderas i den slutliga URL:en som returneras i Location-huvudet när din app utför en GET på mclick URL:en, så att du kan använda dem för analys i appen.
Vad är användarupplevelsen för /ee/v1/click/ URL:er?
Länken öppnas i enhetens standardwebbläsare (standardbeteende för klickspårning), i stället för att hanteras som en djuplänk i appen via det mclick-flöde som beskrivs på den här sidan.
recommendation-more-help
journey-optimizer-help