设置直接深度链接
在 Adjust 控制面板中完成设置后,您就可以在应用中配置深度链接。如果用户的设备上已经安装了应用,就会发生 直接深度链接 。该链接会将用户转到应用内的特定界面。
要启用深度链接,请进行下列操作:
启用 Associated Domain
开始设置时,请在 Apple Developer 账户中启用 Associated Domain (关联域),这样,您就能在应用中设置通用链接域了。为此,请按照以下步骤操作:
- 登入 Apple Developer 账户。
- 从左侧菜单中选择 Certificates, IDs & Profiles 。
- 从左侧菜单中选择 Identifiers 。
- 找到并选中您的应用,打开编辑界面。
- 确保勾选 Capabilities 下的 Associated Domains 。
- 点击 保存 ,保存变更。
在 XCode 中设置深度链接
按照下方步骤操作,在您的 Xcode 项目中添加深度链接配置。
Adjust 通用链接域
- 使用 XCode 打开您的应用项目。
- 从左侧菜单中选择您的项目。
- 在 Targets 中选择您的应用。
- 从顶部菜单中选择 Signing & Capabilities 。
- 确保在下方子菜单中选定 All 。
- 选择 + 图标添加功能。
- 选择 Associated Domains 。
- 填写带有
applinks:
前缀的 Adjust 通用链接域名- 使用
example.adj.st
域的示例:applinks:example.adj.st
。
- 使用
自定义 URL 方案
- 使用 XCode 打开您的应用项目。
- 从左侧菜单中选择您的项目。
- 在 Targets 中选择您的应用。
- 从顶部菜单中选择 Info 。
- 展开 URL Types 板块。
- 选择 添加 选项 ( + 图标) 添加 URL 类别。
- 输入下列信息,以创建 URL 方案:
- 标识符 -
$(PRODUCT_BUNDLE_IDENTIFIER)
- URL 方案 - 您的自定义 URL 方案。该方案必须是唯一的。请勿使用受保护的方案,如
http
、https
或mailto
。 - 角色 :
编辑员
- 标识符 -
该方案适用于您的生产版本 和 调试版本。
修改 iOS 应用
要设置不同的深度链接场景,您需要先更新 iOS 应用。具体应用更新方式取决于您的应用是否使用场景。
不使用场景的应用
如果您的应用不使用场景,请在应用委托中更新方法。
通用链接
请在应用委托中更新 application(_:continue:restorationHandler:) 方法,调用 Adjust SDK 中的下列方法:
ADJLinkResolution.resolveLink
- 仅在营销团队需要使用 Adjust 链接解析解决方案时调用。如果深度链接使用的域与resolveUrlSuffixArray
中的某一元素相匹配,那么方法将会尝试解析深度链接,并返回已解析的链接;如果没有匹配,那么方法就会通过最初的深度链接,您可以将所有深度链接传送至该方法。Adjust.appWillOpen
- 调用该方法,向 Adjust 后台发送深度链接,用于跟踪。Adjust 和非 Adjust 深度链接均可以发送给该方法。Adjust 会忽略不包含 Adjust 参数的所有深度链接。
无论用户是否已经关闭应用,或应用是否在后台运行,只要用户点击通用链接,iOS 就会打开您的应用,将深度链接传送至 application(_:continue:restorationHandler:)
。
func application(
_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void)
-> Bool {
if userActivity.activityType== NSUserActivityTypeBrowsingWeb {
let incomingURL = userActivity.webpageURL
// call the below method to resolve deep link
ADJLinkResolution.resolveLink(
withUrl: incomingURL,
resolveUrlSuffixArray: ["email.example.com","short.example.com"],
callback: { resolvedURL in
// add your code below to handle deep link
// (e.g., open deep link content)
// resolvedURL object contains the deep link
// call the below method to send deep link to Adjust backend
Adjust.appWillOpen(resolvedURL)
})
} else {
return false
}
return true
}
自定义 URL 方案
如果营销团队要求您设置自定义 URL 方案深度链接,请更新应用委托中的 application(_:open:options:)
方法,在 Adjust SDK 中调用 Adjust.appWillOpen
方法。该方法会将深度链接发送至 Adjust 后台用于跟踪。Adjust 和非 Adjust 深度链接均可以发送给该方法。Adjust 会忽略不包含 Adjust 参数的所有深度链接。
无论用户是否已经关闭应用,或应用是否在后台运行,只要用户点击自定义 URL 方案深度链接,iOS 就会打开您的应用,将深度链接传送至 application(_:open:options:)
。
func application(
_ app: UIApplication,
open incomingURL: URL,
options: [UIApplication.OpenURLOptionsKey: Any] = [:]
) -> Bool {
// add your code below to handle deep link
// (e.g., open deep link content)
// incomingURL object contains the deep link
// call the below method to send deep link to Adjust backend
Adjust.appWillOpen(incomingURL)
return true
}
使用场景的应用
如果您的应用使用场景,请在场景委托中更新方法。
通用链接
- 在 scene delegate (场景委托) 中更新
scene(_:willConnectTo:options:)
方法。如果用户在已关闭应用的前提下点击通用链接,那么 iOS 就会打开应用,将深度链接传递给该方法。 - 在 scene delegate (场景委托) 中更新
scene(_:continue:)
方法。如果用户在应用后台运行的前提下点击通用链接,那么 iOS 就会打开应用,将深度链接传递给该方法。
上述方法会调用 Adjust SDK 中的下列方法:
ADJLinkResolution.resolveLink
- 仅在营销团队需要使用 Adjust 链接解析解决方案时调用。如果深度链接使用的域与resolveUrlSuffixArray
中的某一元素相匹配,那么方法将会尝试解析深度链接,并返回已解析的链接;如果没有匹配,那么方法就会通过最初的深度链接,您可以将所有深度链接传送至该方法。Adjust.appWillOpen
- 调用该方法,向 Adjust 后台发送深度链接,用于跟踪。Adjust 和非 Adjust 深度链接均可以发送给该方法。Adjust 会忽略不包含 Adjust 参数的所有深度链接。
func scene(
_ scene: UIScene,
willConnectTo session: UISceneSession,
options connectionOptions: UIScene.ConnectionOptions
) {
guard let userActivity = connectionOptions.userActivities.first,
userActivity.activityType== NSUserActivityTypeBrowsingWeb,
let incomingURL = userActivity.webpageURL
else { return }
// call the below method to resolve deep link
ADJLinkResolution.resolveLink(
withUrl: incomingURL,
resolveUrlSuffixArray: ["email.example.com","short.example.com"],
callback: { resolvedURL in
// add your code below to handle deep link
// (e.g., open deep link content)
// resolvedURL object contains the deep link
// call the below method to send deep link to Adjust backend
Adjust.appWillOpen(resolvedURL)
})
}
func scene(
_ scene: UIScene,
continue userActivity: NSUserActivity) {
if userActivity.activityType== NSUserActivityTypeBrowsingWeb {
let incomingURL = userActivity.webpageURL
// call the below method to resolve deep link
ADJLinkResolution.resolveLink(
withUrl: incomingURL,
resolveUrlSuffixArray: ["email.example.com","short.example.com"],
callback: { resolvedURL in
// add your code below to handle deep link
// (e.g., open deep link content)
// resolvedURL object contains the deep link
// call the below method to send deep link to Adjust backend
Adjust.appWillOpen(resolvedURL)
})
}
}
自定义 URL 方案
- 在 scene delegate (场景委托) 中更新
scene(_:willConnectTo:options:)
方法。如果用户在已关闭应用的前提下点击自定义 URL 方案深度链接,那么 iOS 就会打开应用,将深度链接传递给该方法。 - 在 scene delegate (场景委托) 中更新
scene(_:openURLContexts:)
方法。如果用户在应用后台运行的前提下点击自定义 URL 方案深度链接,那么 iOS 就会打开应用,将深度链接传递给该方法。
上述方法会调用 Adjust SDK 中的 Adjust.appWillOpen
方法,后者会将深度链接发送至 Adjust 后台用于跟踪。Adjust 和非 Adjust 深度链接均可以发送给该方法。Adjust 会忽略不包含 Adjust 参数的所有深度链接。
func scene(
_ scene: UIScene,
openURLContexts URLContexts: Set<uiopenurlcontext>
) {
guard let incomingURL = URLContexts.first?.url else {
return
}
// add your code below to handle deep link
// (e.g., open deep link content)
// incomingURL object contains the deep link
// call the below method to send deep link to Adjust backend
Adjust.appWillOpen(incomingURL)
}