我们正在使用Branch在我们的iOS应用中实现深层链接。现在如果我运行应用程序,然后尝试通过分支链接打开它,branch.initSession
被调用,我可以访问深层链接数据。但是,如果我尝试在未启动应用时直接打开分支链接,则andRegisterDeepLinkHandler
的{{1}}回调不会被执行 - 这基本上会使深层链接无效。
我们的branch.initSession
代码:
AppDelegate
答案 0 :(得分:4)
我们已经能够通过以下方式解决这个问题。问题是我们application(_:,didFinishLaunchingWithOptions:)
中AppDelegate
的返回值。我们已经通过facebook将返回值的生成委托给SDKApplicationDelegate.shared
。似乎branch.initSession
要求application(_:,didFinishLaunchingWithOptions:)
返回true
,而有问题的SDKApplicationDelegate.shared
则返回false。
这是记录在案的,但在文档中很难找到它,特别是如果你不知道这个问题是由于使用branch和facebook SDK引起的。
因此,修复程序是更新application(_:,didFinishLaunchingWithOptions:)
实现:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let branch: 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
// TODO: ... insert custom logic here ...
print("params: %@", params as? [String: AnyObject] ?? {})
}
})
...
// facebook SDK login integration
SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
// always return true!
return true
}
这一切都源于我在整合Facebook时追随this question的答案。我已经在其中添加了一个answer,因此其他人也不会因此而陷入困境。
希望这可以节省几个小时。