深度链接是一种 URI (统一资源标志符,Uniform Resource Identifier),能将用户带到应用中的特定页面,在用户与链接互动后直接呈现相关内容,优化用户体验。
根据用户是否已经安装您的应用,针对 Adobe Experience SDK 的 Adjust iOS Extension 支持两种类型的深度链接:
- 直接深度链接 :如果用户已经安装了您的应用,那么链接就会打开指定页面。
- 延迟深度链接 :如果用户尚未安装您的应用,链接会将用户转到应用商店进行安装。安装后,应用会打开指定页面。
使用直接深度链接再归因用户
您可以向 Adjust 发送深度链接信息,来对用户进行再归因。当用户与深度链接交互时,您可以将这些数据发送给 Adjust,更新用户的归因信息。
-
首先,使用您的深度链接 URI 创建一个 ADJDeeplink
实例。ADJDeeplink
类会验证该 URI,并检查格式化字符串,以确保处理成功。
-
然后调用 processDeeplink
函数来处理深度链接,并将信息发送至 Adjust。
ADJDeeplink
类构造函数需要以下参数:
deeplink
: NSURL
-
打开应用的深度链接 URI。
processDeeplink
函数需要以下参数:
adjustDeeplink
: ADJDeeplink
-
您创建的 ADJDeeplink
实例。
延迟深度链接回传
针对 Adobe Experience SDK 的 Adjust iOS Extension 默认自动打开延迟深度链接。要控制此行为,或在深度链接打开之前进行验证,请配置扩展,在通过延迟深度链接打开应用时调用一个函数。
- 在
AdjustAdobeExtensionConfig
实例上调用 setDeferredDeeplinkReceivedBlock
。
- 调用
AdjustAdobeExtension.setConfiguration
进行设置的配置。
setDeferredDeeplinkReceivedBlock
函数需要以下参数:
deeplinkResponseBlock
: CallbackDeeplinkResponseBlock
-
返回 boolean
值的函数。如果该函数返回 false
,那么 Extension 就不会打开延迟深度链接。
教程:创建延迟深度链接函数
如果您已按照集成指南中的说明进行了操作,那么您就已经配置了 Adjust Extension,可以处理和打开深度链接。如果您尚未进行这些操作,请参考设置深度链接处理相关说明完成操作。
在本教程中,您将了解如何使用 setDeferredDeeplinkReceivedBlock
方法,创建能控制深度链接功能的回传函数。该函数会根据下列条件打开链接:
“如果深度链接包含 "no_open"
,那么应用就不会将其打开。”
结果将如下:
import AdjustAdobeExtension
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
MobileCore.setLogLevel(LogLevel.trace)
let appState = application.applicationState
if let config = AdjustAdobeExtensionConfig(environment: ADJEnvironmentSandbox) {
config.setDeferredDeeplinkReceivedBlock { (deeplink: URL?) -> Bool in
if let deeplinkString = deeplink?.absoluteString.lowercased(),
deeplinkString.contains("no_open") {
AdjustAdobeExtension.setConfiguration(config)
MobileCore.registerExtensions([AdjustAdobeExtension.self]) {
MobileCore.configureWith(appId: "{your_adobe_app_id}")
if appState != .background {
MobileCore.lifecycleStart(additionalContextData: nil)
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
if let deeplink = ADJDeeplink(deeplink: url) {
Adjust.processDeeplink(deeplink)
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
if let incomingUrl = userActivity.webpageUrl {
if let deeplink = ADJDeeplink(deeplink: incomingUrl) {
Adjust.processDeeplink(deeplink)
#import <AdjustAdobeExtension/AdjustAdobeExtension.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[AEPMobileCore setLogLevel: AEPLogLevelTrace];
const UIApplicationState appState = application.applicationState;
AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox];
[config setDeferredDeeplinkReceivedBlock:^BOOL(NSURL * _Nullable deeplink) {
if (deeplink && [[deeplink.absoluteString lowercaseString] containsString:@"no_open"]) {
[AdjustAdobeExtension setConfiguration:config];
[AEPMobileCore registerExtensions:@[AdjustAdobeExtension.class]
[AEPMobileCore configureWithAppId: @"{your_adobe_app_id}"];
if (appState != UIApplicationStateBackground) {
[AEPMobileCore lifecycleStart:nil];
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
[Adjust processDeeplink: [[ADJDeeplink alloc] initWithDeeplink:url]];
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<uiuseractivityrestoring>> * _Nullable))restorationHandler {
if ([[userActivity activityType] isEqualToString:NSUserActivityTypeBrowsingWeb]) {
[Adjust proceessDeeplink:[[ADJDeeplink alloc] initWithDeeplink:[userActivity webpageURL]]];
您需要进行下列操作:
- 在 App Delegate 中找到您的
AdjustAdobeExtensionConfig
实例。在下一行中,以函数块为参数,调用 setDeferredDeeplinkReceivedBlock
方法。该函数块会以参数形式接收深度链接。
if let config = AdjustAdobeExtensionConfig(environment: ADJEnvironmentSandbox) {
config.setDeferredDeeplinkReceivedBlock { (deeplink: URL?) -> Bool in }
AdjustAdobeExtension.setConfiguration(config)
AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox];
[config setDeferredDeeplinkReceivedBlock:^BOOL(NSURL * _Nullable deeplink) {}];
[AdjustAdobeExtension setConfiguration:config];
- 在
setDeferredDeeplinkReceivedBlock
函数块中添加 if
块,以检查深度链接是否包含字符串 "no_open"
。如果包含,则返回 false
。
if let config = AdjustAdobeExtensionConfig(environment: ADJEnvironmentSandbox) {
config.setDeferredDeeplinkReceivedBlock { (deeplink: URL?) -> Bool in
if let deeplinkString = deeplink?.absoluteString.lowercased(),
deeplinkString.contains("no_open") {
AdjustAdobeExtension.setConfiguration(config)
AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox];
[config setDeferredDeeplinkReceivedBlock:^BOOL(NSURL * _Nullable deeplink) {
if (deeplink && [[deeplink.absoluteString lowercaseString] containsString:@"no_open"]) {
[AdjustAdobeExtension setConfiguration:config];
- 最后返回
true
,来打开所有不包含 "no_open"
的深度链接。
if let config = AdjustAdobeExtensionConfig(environment: ADJEnvironmentSandbox) {
config.setDeferredDeeplinkReceivedBlock { (deeplink: URL?) -> Bool in
if let deeplinkString = deeplink?.absoluteString.lowercased(),
deeplinkString.contains("no_open") {
AdjustAdobeExtension.setConfiguration(config)
AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox];
[config setDeferredDeeplinkReceivedBlock:^BOOL(NSURL * _Nullable deeplink) {
if (deeplink && [[deeplink.absoluteString lowercaseString] containsString:@"no_open"]) {
[AdjustAdobeExtension setConfiguration:config];
完成了!当用户通过延迟深度链接打开您的应用时,Adjust Extension 就会检查链接中是否包含字符串 "no_open"
。如果包含该字符串,应用就不会打开深度链接。