27

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

我做了什么:

  1. 包含的分支 SDK (CocoaPods) 添加branch_key到应用程序 plist

  2. 为应用程序 plist 中的 URL 类型添加了 URL 方案

  3. Associated Domains在开发者控制台中的项目和 App ID 中都启用。

  4. 确保权利文件包含在构建中。

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

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

  1. 选中“始终尝试打开应用程序”

  2. “IOS URI 方案”设置为应用程序的自定义 URI 方案。

  3. 选中“启用通用链接”。

  4. Bundle Identifier & Apple App Prefix 均设置正确。

    在 Branch Dashboard 的“Marketing”选项卡下,我创建了一个链接。我正在通过电子邮件将此链接发送给自己并在设备 (Mail.app) 上打开它。Safari 打开,然后打开 App Store,就像未安装应用程序一样。

既不application:openURL:sourceApplication:annotation也不application: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

4 回答 4

14

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

我使用 Ad Hoc 条款将应用程序安装到我的设备上,并且一切正常。

于 2016-02-01T21:06:29.197 回答
12

对我来说,即使我在没有 Adhoc 分发的情况下安装了 tethered,该链接仍然有效。然后有一天它停止了工作。那是因为我在应用程序中单击了指向 bnc 的转发链接。

解决这个问题很简单 - 只需长按链接即可。一个选项显示“在应用程序中打开”。单击此链接由应用程序处理。下次以后,即使没有长按,链接也会按预期工作,因为 Safari 会将其记住为默认行为。

于 2016-07-26T20:37:25.473 回答
1

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

注意:我们可以在调试模式下打开应用程序,(我做到了,正如Alex Bauer在上面的评论部分中指出的那样)。

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

我使用的深度链接域是这个。bnc.lt. 我将我的问题邮寄给 Branch Io 支持团队,然后得到如下回复'

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

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

希望它能解决您的问题,Happy Branching :)

于 2017-03-09T08:52:41.523 回答
1

我有同样的问题 - 这里的一些答案已经过时了,所以我会尝试提供更新:

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

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

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

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

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

于 2019-07-30T13:24:28.697 回答