分支深层链接未打开应用

时间:2016-02-01 19:04:01

标签: ios applinks branch.io

我一直在尝试(不成功)使用Branch来实现我们iOS应用程序的深层链接。分支URL直接重定向到App Store,从不尝试打开应用程序。我一定错过了什么。

我做了什么:

  1. 包含分支SDK(CocoaPods)已向应用程序添加branch_key plist中
  2. 在应用程序plist中为URL类型添加了URL方案
  3. 在项目和App ID中启用Associated Domains 开发者控制台。
  4. 确保授权文件包含在构建中。

  5. AppDelegate中已注册的深层链接处理程序

  6. 信息中心:设置 - >链接设置:

    1. "始终尝试打开应用程序"已检查
    2. " IOS URI Scheme"设置为应用程序的自定义URI方案。
    3. "启用通用链接"检查。
    4. 捆绑标识符& Apple App Prefix都设置正确。

      在分支仪表板内,"营销"选项卡,我创建了一个链接。我通过电子邮件将此链接发送给自己并在设备上打开它(Mail.app)。打开Safari,然后打开App Store,就好像未安装应用程序一样。

    5. 不会调用application:openURL:sourceApplication:annotationapplication:continueUserActivity:restorationHandler

      AppDelegate方法:

      func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
          let branch: Branch = Branch.getInstance()
          branch.initSessionWithLaunchOptions(launchOptions, andRegisterDeepLinkHandler: { params, error in
              if (error == nil) {
                  // params are the deep linked params associated with the link that the user clicked -> was re-directed to this app
                  // params will be empty if no data found
                  // ... insert custom logic here ...
                  NSLog("params: %@", params.description)
              }
          })
          return true
      }
      
      func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
          // pass the url to the handle deep link call
      
          return Branch.getInstance().continueUserActivity(userActivity)
      }
      
      func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
          // pass the url to the handle deep link call
          Branch.getInstance().handleDeepLink(url);
      
          // do other deep link routing for the Facebook SDK, Pinterest SDK, etc
          return true
      }
      

      我错过了配置步骤吗?这是因为应用程序是通过Xcode调试而不是通过应用程序商店安装的?我希望看到调用的应用程序委托方法,但它们不是。

4 个答案:

答案 0 :(得分:12)

似乎必须通过App Store / Test Flight / Ad Hoc安装应用程序,否则将不会考虑安装该应用程序。

我使用Ad Hoc配置将应用程序安装到我的设备上,一切正常。

答案 1 :(得分:11)

对我来说,即使我在没有Adhoc发行版的情况下安装了tethered,链接也能正常工作。然后有一天它停止了工作。那是因为我点击了应用程序内部的bnc前向链接。

对此的修复很容易 - 只需长按链接即可。选项显示“在应用程序中打开”。单击此按钮,链接由app处理。下一次,链接按预期工作,即使没有长按,因为Safari会记住这是默认行为。

答案 2 :(得分:1)

我也有同样的问题,但我的解决方案与你的不同。

注意:我们可以在调试模式下打开应用程序,(我按照上面评论部分Alex Bauer 的指示完成了它)。

.plist中,我添加了两个不同的密钥,一个是live,另一个是test(同时),以及上面提到的配置设置。

我正在使用的深层链接域名就是这个。 bnc.lt。 我就我的问题邮寄给Branch Io支持团队,然后得到以下答复'

  

您遇到问题的原因是您仍在我们的旧版bnc.lt链接域中。这个链接域在过去一年中逐渐被淘汰。开发和功能已经停止了一段时间,支持我们的新链接域(app.link)。   要解决问题并使AASA验证程序正常工作,您需要在分支仪表板(https://dashboard.branch.io/settings/link)上将链接域从bnc.lt更改为app.link。完成此更改后,您需要更新应用以接受新的app.link链接域以及旧的bnc.lt链接域。 https://gist.github.com/ethanneff/a2a70d1b3518c638701c28b1bd374e80

请访问以上链接,非常有帮助。

希望它能解决你的问题,快乐分支:)

答案 3 :(得分:0)

我遇到了同样的问题-这里的一些答案是过时的,因此我将尝试提供更新:

  

解决方法很简单-只需长按链接即可。一个选项显示“在应用程序中打开”。

我相信这在iOS 11中已经消失了,除非您在iOS 10中进行测试,否则这不是一个选择。

  

该应用程序似乎必须通过App Store / Test Flight / Ad Hoc安装,否则将不被视为已安装。

正如亚历克斯在评论中指出的那样,这是不正确的。通过Xcode安装应用程序时,分支链接有效。

对我来说,问题是设备上的某种缓存问题。我有多个方案Debug&Release,每个方案都有自己的分支键和链接。他们是如何混杂在一起的,某些链接无法在一个方案中打开。我可以通过强制重启设备来解决此问题。