分支深层链接不打开应用程序

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

我做了什么:

  1. 包括分支SDK(CocoaPods)向应用程序plist添加了branch_key
  2. 在应用程序中添加了URLscheme到URLtypes
  3. 在开发人员控制台中启用项目和应用程序ID中的Associated Domains
  4. 确保权利文件包含在构build中。

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

仪表板:设置 – >链接设置:

  1. 选中“始终尝试打开应用程序”
  2. “IOS URI Scheme”被设置为应用程序的自定义URIscheme。
  3. 选中“启用通用链接”。
  4. 捆绑标识符和Apple App Prefix都设置正确。

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

无论是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 } 

我是否缺lessconfiguration步骤? 这是因为应用程序是通过Xcodedebugging而不是通过app store安装的? 我期待看到应用程序委托方法调用,但他们不是。

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

我使用Ad Hoc规定将应用程序安装到了我的设备,并且一切正常。

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

解决这个问题很简单 – 只要长时间按下链接即可。 一个选项显示“在应用程序中打开”。 点击这个链接是由应用程序处理。 下一次,链接按预期工作,即使没有长时间按下,Safari浏览器会记住这是默认行为。

我也有同样的问题,但我的解决scheme是不同于你的。

注意:我们可以在debugging模式下打开应用程序(正如Alex Bauer在上面的评论部分所指出的那样)。

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

我正在使用的深度链接的域名是这样的。 bnc.lt 我就我的问题邮寄给分支Io支持团队,然后得到如下答复:

你有问题的原因是因为你仍然在我们的传统bnc.lt链接域。 这个链接域在过去的一年中已经被逐渐淘汰。 开发和function已停止相当一段时间,有利于我们的新链接域(app.link)。 要解决您的问题并让您的AASAvalidation程序正常工作,您需要在分支仪表板( https://dashboard.branch.io/settings/link )上将链接域从bnc.lt更改为app.link。 一旦你做了这个改变,你将需要更新你的应用程序接受新的app.link链接域以及旧的bnc.lt链接域。 https://gist.github.com/ethanneff/a2a70d1b3518c638701c28b1bd374e80

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

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