我已将 Branch.io SDK 添加到我的 iOS 项目中。我有一个工作正常的自定义 URL 方案,我添加了工作正常的通用应用程序链接。
现在,我已在仪表板中启用了 iOS 应用程序,其中添加了自定义 URL 方案、用于下载应用程序的自定义 URL、应用程序前缀和 bundle 标识符。
在“快速链接”部分中,我创建了一个快速链接,其中有一个用于深层链接部分的 [“key”: “value”] 对,并再次添加了一个重定向到我的 jenkins,可以在其中下载 ipa。
现在,如果我通过在移动 safari 中复制/粘贴来访问该链接,而无需安装应用程序,我会正确地转到 Jenkins。
此时,我从 xcode 运行应用程序,并在应用程序委托(delegate)中运行
branch = Branch.getInstance()
branch.initSession(launchOptions: 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 ...
print("params: %@", params as? [String: AnyObject] ?? {})
} else {
print(error?.localizedDescription ?? "")
}
})
问题在于 params 始终只包含两个参数:
params: %@ ["+clicked_branch_link": 0, "+is_first_session": 0]
我也实现了
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
let branchHandled = branch.application(application,
open: url,
sourceApplication: sourceApplication,
annotation: annotation
)
if (!branchHandled) {
// If not handled by Branch, do other deep link routing for the Facebook SDK, Pinterest SDK, etc
var handled = false
handled = //this is Facebook handling
guard handled == false else { return true }
} else {
// do some stuff if it's coming from branch
}
return branchHandled
}
我的兴趣是让分支传递我的 ["key": "value"] 对,以便在此时将其像深层链接一样处理,但我不知道还可以尝试什么。
最佳答案
延迟深度链接失败可能是由于特定分支应用程序的分支 key 和分支链接不匹配。验证用于延迟深度链接的分支链接是使用 iOS 项目的 info.plist 中使用的相同分支 key 生成的。
关于iOS App Delegate params 字典不包含任何相关链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47512015/