ios - Branch.io 自定义网址缩短器和通用链接

标签 ios branch.io

假设: 我有一个自定义 URL 缩短器,可重定向到 branch.io 长 URL。 该自定义 URL 域已在我的应用程序的通用链接授权文件中注册。 当用户点击短链接时,应用程序打开并调用 application:continueUserActivity:restorationHandler:... 在该方法中,我获取短链接后面的重定向 URL(分支),基于新链接创建一个新的 NSUserActivity 并从 Branch SDK 调用“continueUserActivity”方法(以新事件作为参数)。

问题是来自 Branch SDK 的回调不会返回任何连接到该链接的内容。它返回时就好像没有传递 URL 一样。

如果我对来自重定向的链接进行硬编码并立即调用 Branch SDK,而不等待重定向响应,则一切正常。我想这与 Branch SDK 中的时间有关。

问题是:如何让 Branch 识别链接并返回我在使用上述重定向方案时需要的参数? (我想使用我自己的 URL 缩短器,而不是 Branch 的)

最佳答案

在确定是否需要处理 Branch 链接时,Branch 检查以验证 NSUserActivity 的类型是否为 NSUserActivityTypeBrowsingWeb。如果是,Branch 会检查 .webpageURL 以确定它是否是 Branch 链接。如果不是,Branch 知道没有 Branch 链接被点击。

要在应用以其他方式打开后手动将 Branch 链接传递到 SDK,有两个可用函数:.continue 和 .handleDeepLink。

.继续

    let activity = NSUserActivity(activityType: "NSUserActivityTypeBrowsingWeb")
    activity.webpageURL = URL(string: "https://testbed-swift.app.link/77Q527xswy")
    Branch.getInstance().continue(activity);

.handleDeepLink

    Branch.getInstance().handleDeepLink(URL(string: "https://testbed-swift.app.link/77Q527xswy"))

如果您调用这些方法之一,Branch SDK 将处理传入的 Branch 链接。如果这些方法对您不起作用,我会检查以验证您是否确实在代码中传入了一个有效的 Branch 链接,并且不是您用来打开应用程序的短链接。

关于ios - Branch.io 自定义网址缩短器和通用链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35607924/

相关文章:

ios - 在两种方法中调用时,在控制中心中快速更新媒体元数据不起作用

ios - 如何在 Frank/Calabash 中更改 Switch 的值

iOS - native 应用程序中基于 SOAP 的支付 API 的使用

ios - iOS 上的 Ionic Geolocation 权限问题

ios - 当设备在 3g 网络上时 AFNetworking 不工作,但当应用程序在 wifi 网络上时它工作

android - Android 应用上的分支指标链接

ios - 当我使用 Branch 框架时应用程序崩溃

android - “类型”字不能附加为 branch.io 深层链接上的查询字符串

ios - `Branch.initSession` 当应用程序从链接启动时不调用 `andRegisterDeepLinkHandler` 回调

iOS 12.1.2 branch.io 通用链接打开应用程序,但不存在数据