Konfigurera e-postmeddelanden email-deeplinks

Med hjälp av e-postlänkar kan du ta mottagare från ett e-postmeddelande 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.

Om du vill lägga till en överordnad länk i ett e-postmeddelande kontrollerar du att länkspårning är aktiverat. Markera elementet som du vill länka (text, knapp eller bild) i e-post-Designer, klicka på Insert link i det sammanhangsberoende verktygsfältet och välj Deeplink för att ange URL-adressen för länken. Läs mer om att infoga länkar

När mottagarna klickar på länken tas de direkt till det avsedda innehållet i appen - förutsatt att du har slutfört konfigurationsstegen som finns på den här sidan, som omfattar:

  • Konfigurera e-postmeddelanden i Journey Optimizer
  • Implementera hantering av deplink för iOS och Android i mobilappen
NOTE
Adobe Journey Optimizer har stöd för lä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.

Konfiguration i Journey Optimizer configuration

Om du vill kunna använda e-postmeddelanden för dina mobilappar slutför du konfigurationsstegen nedan.

NOTE
Det här avsnittet gäller när du använder universella länkar (iOS) och applänkar (Android) (HTTPS-baserade fjärrlänkar).
  1. I Journey Optimizer ska du delegera den underdomän där deplinking är aktiverat. 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
När länkspårning för är aktiverat används e-postinfrastrukturen för Adobe. Spårade nedlä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 e-postlä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.

Det här avsnittet innehåller vanliga implementeringsmönster för deplinks. 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 att fördärva.
  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 överordnad länk.
  • Testa din överordnade länk: Skicka ett korrektur och klicka på länken till den 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 lä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å nedlä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 deplänk, klicka på det på iOS- och Android-enheter (installerade och inte installerade scenarier).

  • Validera:

    • Det slutgiltiga värdet för e-postlänken (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 distribuera på 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 som jag konfigurerar använda ett deplänkningsformat (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