添加深度链接支持
当用户在安装了应用程序的设备上点击深度链接时,应用程序会打开并显示特定的产品或体验。
Singular 跟踪链接可以包含深度链接功能和延迟深度链接(更多信息请参阅我们的深度链接常见问题和Singular 链接常见问题)。
上一步实现的 Singular SDK 配置引用了一个回调函数("handleDeeplink")。要通过 Singular SDK 启用深度链接和延迟深度链接支持,就必须使用 "handleDeeplink "函数。
实现深度链接的先决条件
确保已完成以下步骤:
- 按照Singular Links Prerequisites 中的说明进行操作。
- 在 Xcode 中,将 Singular 自定义子域添加到Signing & Capabilities > Associated Domains 中。
- 在 "信息">"URL类型"中将应用程序方案添加到 URL类型。
- 在 Singular 平台的应用程序页面中添加 Apple DeveloperTeam ID和方案。
注意:
- 如果应用程序已配置为使用 iOS 通用链接,则通用链接域已存在于关联域中,可以保留。该域应添加到 "支持的域 "配置选项中,如下一节所述。
- 您还必须包含Singular 自定义链接域,以便 Singular 可以跟踪营销活动的归属,并处理这些营销活动的深度链接。
为处理程序创建回调方法
下面的代码示例创建了一个名为handleDeeplink 的回调方法(上文的配置代码示例中引用了该方法)。
代码块签名为void(^)(SingularLinkParams*)。SingularLinkParams包含深度链接目标、直通参数以及链接是否延迟。
func handleDeeplink(params: SingularLinkParams?) {
// Get Deeplink data from Singular Link
let deeplink = params?.getDeepLink()
let passthrough = params?.getPassthrough()
let isDeferredDeeplink = params?.isDeferred()
let urlParams = params?.getUrlParameters()
// Add deep link handling code here
//...
}
- (void)handleDeeplink:(SingularLinkParams*)params{
// Get Deeplink data from Singular Link
NSString *deeplink = [params getDeepLink];
NSString *passthrough = [params getPassthrough];
BOOL isDeferredDeeplink = [params isDeferred];
NSDictionary *urlParams = [params getUrlParameters];
// Add deep link handling code here
//...
}
其他链接选项
Singular SDK 还支持非 Singular 提供的通用链接。这是为支持深度链接的合作伙伴(如谷歌广告和Facebook)衡量归因所必需的。
对于 Singular iOS SDK 12.0.3 及以上版本,默认支持非 Singular 通用链接。
在旧版本的 SDK 中支持第三方深度链接:
- 在旧版本的 Singular iOS SDK 中,每次初始化 Singular SDK 时,都需要将所有相关域(不包括sng.link)添加到supportedDomains配置选项(在Config对象中)。这样就可以实现第三方深度链接行为,但无法实现深度链接的归属。要进行归因,仍需使用 Singular 跟踪链接。
- supportedDomains功能假定您已为通用链接配置了应用程序,并在您的域上托管了自己的 AASA 文件。
func getConfig() -> SingularConfig? {
// Singular Config Options
guard let config = SingularConfig(apiKey: Constants.APIKEY,
andSecret: Constants.SECRET) else {
return nil
}
//...
config.supportedDomains = ["subdomain.mywebsite.com",
"anothersubdomain.myotherwebsite.com"]
//...
return config
}
- (SingularConfig *)getConfig {
// Singular Config Options
SingularConfig* config = [[SingularConfig alloc] initWithApiKey:APIKEY
andSecret:SECRET];
//...
config.supportedDomains = @[@"subdomain.mywebsite.com",
"anothersubdomain.myotherwebsite.com"];
//...
return config;
}
Singular SDK 支持由 ESP(电子邮件服务提供商)提供的通用链接。
ESP 域必须启用 HTTPS。Apple要求iOS 应用程序从支持 HTTPS 的端点拉取 apple-app-site-association 文件,而无需重定向。请咨询您的 ESP,了解他们如何为您的应用程序托管此文件,因为这可能需要在您网站的 DNS 上进行 DNS 配置。通常情况下,ESP 会提供启用 HTTPS 所需的步骤。
要支持 ESP 域,请在 Singular SDK 每次初始化时将自定义跟踪域添加到espDomains配置选项(配置对象中)。
func getConfig() -> SingularConfig? {
// Singular Config Options
guard let config = SingularConfig(apiKey: Constants.APIKEY,
andSecret: Constants.SECRET) else {
return nil
}
//...
config.espDomains = ["links.mywebsite.com"]
//...
return config
}
- (SingularConfig *)getConfig {
// Singular Config Options
SingularConfig* config = [[SingularConfig alloc] initWithApiKey:APIKEY
andSecret:SECRET];
//...
config.espDomains = @[@"links.mywebsite.com"];
//...
return config;
}