Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 12.1.2 branch.io Universal Links已打开应用程序,但不存在任何数据_Ios_Deep Linking_Branch.io_Ios Universal Links_Swift4.2 - Fatal编程技术网

iOS 12.1.2 branch.io Universal Links已打开应用程序,但不存在任何数据

iOS 12.1.2 branch.io Universal Links已打开应用程序,但不存在任何数据,ios,deep-linking,branch.io,ios-universal-links,swift4.2,Ios,Deep Linking,Branch.io,Ios Universal Links,Swift4.2,我正在尝试通过branch.io为iOS应用程序(Swift 4.2)实现深度链接。我已经完全按照分支文档中的概述集成了iOS SDK。为了测试集成,我运行了branch.io通用链接验证脚本,它成功通过了测试 什么不适用于通用链接: 单击“Notes”或“Messages”中的deeplink会打开应用程序,但不会传递任何数据。分支在查看调试日志时报告一个完全空白的url(example.app.link?%24identity\u id=611647344982868361),而不是(exa

我正在尝试通过branch.io为iOS应用程序(Swift 4.2)实现深度链接。我已经完全按照分支文档中的概述集成了iOS SDK。为了测试集成,我运行了branch.io通用链接验证脚本,它成功通过了测试

什么不适用于通用链接: 单击“Notes”或“Messages”中的deeplink会打开应用程序,但不会传递任何数据。分支在查看调试日志时报告一个完全空白的url(
example.app.link?%24identity\u id=611647344982868361
),而不是(
example.app.link/hj86HlvvMk2?%24identity\u id=611647344982868361
)。这与不使用deeplink手动打开应用程序是一样的。延迟的deeplink功能也无法提供任何数据

使用URI方案而不是通用链接: 如果我通过branch.io link settings仪表板关闭通用链接,那么所有URL都会在浏览器中打开,而不会出现打开应用程序的任何提示。但是,当我手动打开应用程序时,deeplink数据在启动时可用(通过延迟链接功能)

其他尝试:
$uri\u redirect\u mode:2
添加到链接数据以强制打开应用程序并没有真正改变任何事情。唯一不同的是,对于URI方案,它在重定向到
$fallback\uURL
之前在Safari中显示一个错误。我还尝试重新安装应用程序fresh,清除Safari缓存和cookies,但没有成功

我还要提到的是,深度链接本身应该没有问题。在Android上,同样的深度链接也能完美地工作

这两种方法都无法在deeplink数据立即可用的情况下打开应用程序。有没有其他方法可以让这一切顺利进行

更新:URI和通用链接是独立的问题。我们通过双重检查我们的URI方案(它是不正确的),使URI正常工作。对于通用链接,分支机构关于Swift 4.2的文档中可能有轻微错误。请参阅我的答案以获得解决方案


更新2019-02-05:已更新Swift 4.2的分支机构文件。一切都很顺利。

这里分行的杰基

你能确保通过下面的检查点吗

  • 添加到Info.plist()的分支密钥和URI方案
  • 正在didFinishLaunching()中调用initSession
  • openUrl和continueUserActivity正在被适当调用()
  • 无网络接口修改()
  • 确保没有第三方触发分支事件,在关闭之前或之后使用单击()

如果您继续看到链接数据未通过,请发送电子邮件给您的分支应用ID,您正在使用的链接integrations@branch.io以便我们的团队能够进行深入研究?

更新2019-02-05:分支机构文档现在是Swift 4.2的最新版本


原始答案:

func application(_ application: UIApplication,
                 continue userActivity: NSUserActivity, 
                 restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
  // handler for Universal Links
  Branch.getInstance().continue(userActivity)
  return true
}
func application(_ application: UIApplication, 
                 continue userActivity: NSUserActivity, 
                 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
  // handler for Universal Links
  Branch.getInstance().continue(userActivity)
  return true
}
好的,我们找到了解决通用链接不起作用的方法。我认为分行文件不是Swift 4.2的最新版本。处理通用链接时,
func应用程序(\uApplication:UIApplication,continue userActivity:NSUserActivity,restorationHandler:@escaping([Any]?)->Void)
协议应使用
[UIUserActivityRestoring]
而不是
[Any]
来处理
restorationHandler
参数。见下文:

当前分支机构文档(不工作):

func application(_ application: UIApplication,
                 continue userActivity: NSUserActivity, 
                 restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
  // handler for Universal Links
  Branch.getInstance().continue(userActivity)
  return true
}
func application(_ application: UIApplication, 
                 continue userActivity: NSUserActivity, 
                 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
  // handler for Universal Links
  Branch.getInstance().continue(userActivity)
  return true
}
上述函数还会在XCode中引起警告。自动修复它不会工作,它只会将它转换为一个私有函数,而不是正确的协议

纠正(工作):

func application(_ application: UIApplication,
                 continue userActivity: NSUserActivity, 
                 restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
  // handler for Universal Links
  Branch.getInstance().continue(userActivity)
  return true
}
func application(_ application: UIApplication, 
                 continue userActivity: NSUserActivity, 
                 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
  // handler for Universal Links
  Branch.getInstance().continue(userActivity)
  return true
}

谢谢你的回复。我们仔细检查了上面的整个列表,集成确实遵循了所有这些规则。我们让它与URI模式一起工作,它会提示“在X中打开”。然而,在某些情况下,现在“取消”按钮仍然会打开我们的应用程序。这不是什么大问题,但很尴尬。我们将继续努力使“通用链接”正常工作,如果我们无法弄清问题的真相,我们将向支持团队发送电子邮件。@viad您能帮我解决我的问题吗?目前,我已经通过了SDK集成检查,但仍然通过分支进行深度链接,无法工作。