iOS通用链接

概述

Branch使启用通用链接的所有功能变得很简单,同时又对其进行了大幅改进,提供了完整的归因, 并允许您在用户未安装您的应用程序'时进行深度链接接。

图像

设置

在Branch仪表板上启用通用链接

  1. 导航到仪表板中的“链接设置 ”。
  2. 选中从iOS重定向中的Enable Universal Links 的框。
  3. 输入应用程序的Bundle Identifier。
  4. 键入您的Apple App前缀(通过在Apple '的开发人员门户中的第此页页点击您的应用程序找到)。
  5. 向下滚动并点击Save 按钮。

图像

在Xcode中启用关联域

  1. 转到项目文件的Capabilities 选项。
  2. 向下滚动并启用Associated Domains图像

如果在此步骤后看到错误

图像

请确保...

  • 为您的Xcode项目选择了合适的团队。
  • Xcode项目的捆绑包标识符与用于向Apple注册应用程序标识符的捆绑包标识符匹配。

添加您的Branch链接域

  1. 转到信息中心上的“ 链接设置页面。
  2. 向下滚动到Link Domain 区域。
  3. 复制您的域名。图像
  4. Domains 部分中,点击+ 图标并添加以下条目:(确保xxxx 与您为自己分配或选择的'个子域前缀匹配)
    • applinks:xxxx.app.link
    • applinks:xxxx-alternate.app.link
    • applinks:xxxx.test-app.link
    • applinks:xxxx-alternate.test-app.link

图像

支持旧版链接

如果Default domain name 框显示旧bnc.lt 域,则应改用以下条目: applinks:bnc.lt

使用自定义域还是子域?

如果使用您分公司链接的自定义域或子域 ,则应该增加条目applinks:[mycustomdomainorsubdomain]XXXX.app.linkXXXX-alternate.app.link 。如果您'不确定分支机构分配的app.link子域,请联系 [受电子邮件保护] ,我们可以提供。

高级

支持通用链接的应用/浏览器

通用链接在某些应用程序下不会工作。我们已经对接了一些较流行的应用程序来支持的Universal Links支持状态。

始终有效的应用

如果您在其中一个应用程序中打开通用链接,它应该一直正常工作。

应用/浏览器 状态
Messages 正常
Mail 正常
WhatsApp 正常
Gmail 正常
Inbox 正常

Apple限制的应用

为了避免混淆用户, 苹果在某些情况下限制了通用链接:

  • 如果将链接粘贴到浏览器URL字段中,则通用链接将不起作用。
  • 通用链接与跨域的用户驱动<a href="..."> 元素click 。范例:如果google.com上有一个指向bnc.lt的通用链接,它将打开该应用程序。
  • 通用链接不适用于用同域名的<a href="..."> 元素,点击相同的域 。例如:如果google.com上有一个通用链接指向google.com上的另一个通用链接,则它将不会打开该应用程序。
  • 除非是用户操作的一部分,否则无法通过Javascript(在window.onload<a> 元素上的.click() 调用)触发通用链接。
应用/浏览器 状态
Safari 有条件地工作
Chrome 有条件地工作

有时可以运行的应用

具有内置Web视图的应用程序(Google,Twitter,Facebook,Facebook Messenger,微信等)仅在打开Web视图时才能与Universal Links一起使用。换句话说,通用链接在Feed或主应用程序视图中无法在应用程序内运行。

要解决此限制,您的链接必须启用深视图或类似的功能,并且调用性用语链接/按钮后面带有通用链接。这样,点击应用程序供稿中的链接将打开一个包含您的深度视图页面的Web视图,然后用户可以点击链接/按钮以启动您的应用程序。 Apple '的所有限制(在上一节中)仍然适用于Deepview页面。

应用/浏览器 状态
Google 有条件地工作
Facebook 有条件地工作
Facebook Messenger 有条件地工作
WeChat 有条件地工作
Twitter 有条件地工作
LinkedIn 有条件地工作
Any app using SFSafariViewController 有条件地工作

具有特殊情况的应用

应用/浏览器 状态
Slack 如果配置为在Safari中打开链接,则可以使用。否则,将按上述部分中的条件进行工作。

无法使用的应用

应用/浏览器 状态
Pinterest 不工作
Instagram 不工作
Telegram 不工作

导致通用链接失败的常见问题

Xcode项目的自动验证

您可以使用我们的 Universal Links Validator 检查Xcode项目是否正确配置。

您是否通过手动进入Safari进行测试?

通用链接不要'顺利活动时进入Safari浏览器。使用Notes或iMessage进行测试。

您是否将Branch链接与另一个链接一起包装并重定向?

在大多数情况下,通过点击跟踪链接将通用链接"包裹"时,通用链接不会打开该应用' 。通用链接(包括Branch链接)必须是独立的。如果您希望通用链接在所有情况下都能正常工作,请不要使用其他重定向到Branch链接的链接。

您的Team ID & Bundle ID与您的仪表板上的ID匹配吗?

你可以找到他们在设置下的仪表盘>链接设置,在iOS的部分旁边"启用通用链接。 "它们应与您的团队ID和捆绑包ID相匹配。团队ID可以在这里找到 https://developer.apple.com/membercenter/index.action#account摘要 。您的捆绑包ID在Xcode的General 选项卡中找到正确的构建目标。如果您的Apple App Prefix与Team ID不同,则应使用App Prefix。您可以在Apple '的开发人员门户上的应用程序ID中找到您的应用程序前缀。

您是否删除了该应用程序并重新安装?

除非您删除并重新安装该应用程序,否则iOS不会重新抓取apple-app-site-association文件。 (唯一的例外是App Store更新。iOS会在每次更新时重新抓取。这意味着,当用户使用授权的应用程序链接更新到您的应用程序版本时,Universal Links将开始为他们工作。)

不幸的是,可以禁用通用链接。

如果您通过通用链接成功进入了您的应用程序,则'在状态栏的右上角看到" app.link " (或您的域)和一个前进按钮。如果您单击该按钮,Apple将来将不再激活通用链接。要重新启用通用链接,请长按Messages(仅由于10中的iMessage改进而导致iOS 9)或Notes(iOS 10/9)中的链接,然后选择'在 '打开。

使用自定义域?

确保' s配置正确。您可以使用我们的 Universal Link Validator 找到配置问题。

以下错误信息将出现在您的操作系统级别的日志如果您的域名没有按'吨有SSL设置正确:

Sep 21 14:27:01 Derricks-iPhone swcd[2044] <Notice>: 2015-09-21 02:27:01.878907 PM [SWC] ### Rejecting URL 'https://examplecustomdomain.com/apple-app-site-association' for auth method 'NSURLAuthenticationMethodServerTrust': -6754/0xFFFFE59E kAuthenticationErr

通过导航到Window > Devices >选择您的设备,然后点击主视图左下角的" up "箭头,可以找到连接到Xcode的物理设备的这些日志。

如果'使用自定义子域重新,您的CNAME应指向custom.bnc.lt链接设置中Branch仪表盘。

返回YES继续continueUserActivity

当用户通过通用链接进入您的应用时,我们将检查链接URL是否包含app.link 。如果是这样,则handledByBranch 将返回YES 。如果不是,则handledByBranch 将返回NO 。这使我们可以明确确认传入的链接来自Branch,而无需进行服务器调用。

对于大多数实现而言,这永远不会成为问题,因为您的深度链接接将以任何一种方式正确路由。但是,如果您使用自定义链接域 ,则依靠handledByBranch 为每个传入的Branch生成的通用链接返回YES ,可以按照以下步骤通知Branch SDK:

  1. 在您的Info.plist 文件中,创建一个名为branch_universal_link_domains的新密钥。
  2. 将您的自定义域添加为字符串。 图像
  3. 保存文件。

多个自定义域

如果您有多个自定义链接域的异常情况,也可以将branch_universal_link_domains 配置为字符串数组。 图像

处理仅网络内容的链接

仅通用电子邮件

如果您具有仅存在于Web而非应用程序中的内容的链接(例如,应用程序中不为' t的临时营销网页),则此代码段将确保所有未应用深度链接接脚本的链接将在浏览器中打开。

您应该在深度链接处理程序代码块内添加此代码段。请注意,这使用查询参数$web_only=true 。这应该与您在电子邮件中输入的Web URL上的查询参数匹配。

[branch initSessionWithLaunchOptions:launchOptions andRegisterDeepLinkHandler:^(NSDictionary *params, NSError *error) {
  // params are the deep linked params associated with the link that the user clicked before showing up.
  if (params[@"$3p"] && params[@"$web_only"]) {
            NSURL *url = [NSURL URLWithString:params[@"$original_url"]];
            if (url) {
                [application openURL:url]; // check to make sure your existing deep linking logic, if any, is not executed, perhaps by returning early
            }
  } else {
    // it is a deep link
    GDLog(@"branch deep link: %@", [params description]);
    [self handleBranchDeeplink:params];
  }
}];

大约一个月前更新

iOS通用链接


建议的编辑仅限于API参考页

您只能建议对Markdown正文内容进行修改,而不能建议对API规范进行修改。