我们有一个iOS应用程序并使用Branch SDK来实现邀请。我们在通用链接中作为参数传输的所有必需数据。 我们的问题是,当用户在设备上已安装应用程序时点击链接时,它可以正常工作,但是当用户必须从Testflight或AppStore之间安装应用程序时,它无法在随机情况下传递数据。它有时会起作用,有时却不起作用。同一个链接现在可以正常工作,但在几分钟后就失败了。在“失败”下,我的意思是参数不会传递给应用程序。
这是我们的配置:
我们为登台和制作环境设置了Info.plist文件,如文档中所述:
所有这些字段都出现在两个环境的.plist文件中。
另外,我们设置了.entitlements文件,我们放置了相关的域。它包含6个值:
并将此文件添加到暂存和生产目标。
在我的AppDelegate中,我设置了这样的分支:
Branch.setUseTestBranchKey(Configuration.branchTestKeyEnabled)
let branch: Branch = Branch.getInstance()
branch.initSession(launchOptions: launchOptions, andRegisterDeepLinkHandler: {params, error in
if error == nil {
print("params: %@", params as? [String: AnyObject] ?? {})
} else {
print(error)
}
})
哪里
Configuration.branchTestKeyEnabled
适用于staging,false适用于生产。
发布后,我尝试引用这样的参数:
let branch = Branch.getInstance()
let params = branch?.getLatestReferringParamsSynchronous() as? [String : Any]
// Do something with parameters
以下是验证脚本的报告: Report
我认为我的配置可能有问题,但我不明白为什么它的行为如此不一致。
答案 0 :(得分:0)
布莱恩来自分公司。</ p>
由于您收到的数据不一致,可能会出现竞争情况。我们建议您在此处从侦听器方法中读取深层链接参数:
branch.initSession(launchOptions: launchOptions, andRegisterDeepLinkHandler: {params, error in
if error == nil {
print("params: %@", params as? [String: AnyObject] ?? {})
} else {
print(error)
}
})
如果无法做到这一点,我们还建议您拨打getLatestReferringParams()
,而不是getLatestReferringParamsSynchronous()
。
有关详细信息,请访问:https://docs.branch.io/pages/apps/ios/#read-deep-link