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:
-
konfigurationsstegen i Journey Optimizer;
-
implementeringen av mobilappar steg för iOS och Android i din mobilapp.
/ee/v1/mclick/*) för att säkerställa kompatibilitet och klickspårning.Skapa djuplänkar authoring
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 unikidfö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'}}
<<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.
-
I Journey Optimizer delegerar du den underdomän där djuplänkning är aktiverad. Läs mer
-
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
-
/ee/v1/mclick/*, som Adobe är värd för och löser.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.
iOS (Universal Links) ios-implementation
-
I Xcode väljer du ditt mål genom Signing & Capabilities > + Capability > Associated Domains.
-
Lägg till poster för dina delegerade underdomäner, till exempel:
code language-text applinks:www.mybusiness.com applinks:data.email.mybusiness.com -
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 } }
mclick-URL:en och läsa Location-rubriken, och sedan skicka den baserat på final -URL:en.mclick i Safari; som motverkar syftet med djuplänkning.Android (App Links) android-implementation
-
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> -
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 } }
mclick och använda rubriken Location för att fastställa det slutliga målet.followRedirects(false) så att du styr omdirigeringshantering och kan logga analyser korrekt om det behövs.Rekommenderade rutiner deeplink-best-practices
- Använd stabila sökvägar: Föredrar vägar som är resistenta mot ändringar i appanvändargränssnittet (till exempel
/account/ordersi 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
- 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).
- 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.
- 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).
-
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
assetlinks.json-konfiguration för varje underdomän som ska ha stöd för funktionen.appname://path)?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.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./ee/v1/click/ URL:er?mclick-flöde som beskrivs på den här sidan.