【问题标题】:Branch Deep link not opening application分支深层链接未打开应用程序
【发布时间】:2016-05-10 08:38:39
【问题描述】:

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

我做了什么:

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

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

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

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

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

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

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

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

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

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

    在分支仪表板的“营销”选项卡下,我创建了一个链接。我正在通过电子邮件将此链接发送给自己并在设备 (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
}

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

【问题讨论】:

  • 我在 let branch 的行中遇到了 BAD EXCESS:Branch = Branch.getInstance() 在应用程序委托类中,你能对此提出建议吗,我也在使用 swift
  • @Nick : 你找到解决办法了吗?

标签: ios applinks branch.io


【解决方案1】:

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

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

【讨论】:

  • 我现在也有同样的问题。大约 2.5 个月前他们工作得很好,现在我立即被派往 Safari。临时安装是什么意思?如果您在 Xcode 之外运行设备,它们将无法工作?
  • @spacemonkey 我发现我无法使用 XCode 在调试模式下测试运行应用程序的深度链接。该应用程序需要通过 Ad Hoc 部署或 App Store 安装到设备上。我的假设是 iOS 在通过 XCode Debug 部署时没有报告应用程序“已安装”。在此处了解 Ad Hoc 分发:developer.apple.com/library/ios/documentation/IDEs/Conceptual/…
  • 感谢您的帮助。我可以证实这一点。我使用 Fabric 进行了分发以调试深层链接,并且在以这种方式安装的设备上一切正常。
  • @Nick :我的动态和市场链接在近一个月前运行良好,但从昨天开始,这些链接将我重新定向到 safari,然后转到应用商店而不是应用程序。我已经检查了所有设置三次,并且在我从 safari 移动到我的应用程序之后,我得到了带有参数的分支 io 方法的回调。
  • 来自 Branch.io 的 Alex:这是准确的。当通过 Xcode 安装应用程序时,分支链接可以正常工作——这肯定是由于其他一些配置问题。
【解决方案2】:

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

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

【讨论】:

  • @kdeo,你是否与 Swift 集成,如果是,我需要一些帮助,我在 swift 中尝试过,但是下面的方法没有在内部执行。 let branch: Branch = Branch.getInstance() branch.initSessionWithLaunchOptions(launchOptions, andRegisterDeepLinkHandler: { params, error in if (error == nil) { // 参数是与用户点击的链接相关联的深层链接参数 -> 是重定向到这个应用 NSLog("params: %@", params.description) } })
【解决方案3】:

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

注意:我们可以在调试模式下打开应用程序,(我做到了,正如上面评论部分中的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 :)

【讨论】:

    【解决方案4】:

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

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

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

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

    正如 Alex 在 cmets 中指出的那样,这并不准确。通过 Xcode 安装应用程序时,分支链接有效。

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

    【讨论】:

    • 这正是我的问题。重新启动设备并从 Xcode 重新安装应用程序解决了这个问题!谢谢! ?
    猜你喜欢
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 2018-02-12
    • 2017-11-16
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 2016-06-26
    相关资源
    最近更新 更多