Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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 未使用正确的元数据调用Branch.io深度链接处理程序_Ios_Branch.io_Deeplink - Fatal编程技术网

Ios 未使用正确的元数据调用Branch.io深度链接处理程序

Ios 未使用正确的元数据调用Branch.io深度链接处理程序,ios,branch.io,deeplink,Ios,Branch.io,Deeplink,这是一种情况:如果我单击其中一个与自定义键/值关联的链接,则会触发从initSessionWithLaunchOptions:andRegisterDeepLinkHandler进行的回调,但如果应用程序是从链接新打开的,“params”仅包含自定义键/值。如果应用程序已经在后台运行,我单击了链接,则会调用回调,但不存在任何参数。这在几周前是有效的,现在似乎停止了。我也尝试升级到iOSSDK0.12.1,但还没有成功 作为一种解决方法,在应用程序激活后,我尝试执行对Branch.getInsta

这是一种情况:如果我单击其中一个与自定义键/值关联的链接,则会触发从
initSessionWithLaunchOptions:andRegisterDeepLinkHandler
进行的回调,但如果应用程序是从链接新打开的,“params”仅包含自定义键/值。如果应用程序已经在后台运行,我单击了链接,则会调用回调,但不存在任何参数。这在几周前是有效的,现在似乎停止了。我也尝试升级到iOSSDK0.12.1,但还没有成功

作为一种解决方法,在应用程序激活后,我尝试执行对
Branch.getInstance().getLateStreeFerringParams()
的延迟调用序列,有时我从中获取参数,但这不是确定性的,有时需要2秒,有时10秒,有时从不。 @以下是应用程序代理的部分。顺便说一句,我没有在应用程序中集成facebook:

func应用程序(应用程序:UIApplication,didfishlaunchingwithoptions启动选项:[NSObject:AnyObject]?)->Bool{
让branch:branch=branch.getInstance()
branch.initSessionWithLaunchOptions(launchOptions,andRegisterDeepLinkHandler:{params,错误在
如果(错误==nil){
打印(参数)
self.tryInviteFlow(参数)
}否则{
打印(错误。本地化描述)
}
})
}
func应用程序(应用程序:UIApplication,continueUserActivity用户活动:NSUserActivity,restorationHandler:([AnyObject]?)->Void)->Bool{
//将url传递给句柄深度链接调用
返回Branch.getInstance().continueUserActivity(userActivity);
}

这里有一个快速故障排除入门,用于解决分支链接在冷启动时正常工作,但在应用程序在后台启动后变为活动状态时无法正常工作的问题

从分支链接打开应用程序时:

  • 如果应用程序是冷启动的(即它不在后台),则入口点是didFinishLaunchingWithOptions
  • 如果应用程序位于后台并通过通用链接打开(如果设备运行的是iOS 9.2+),则进入点将是continueUserActivity功能
  • 如果应用程序是通过URI方案打开的(如果设备运行的是iOS 9之前的版本,可能是iOS 9到9.2版本),则入口点将是openURL函数
插入到openURL和continueUserActivity函数中的分支代码也会调用在didFinishLaunchingWithOptions中定义的相同分支初始化回调:

  • 在openURL中,这是:Branch.getInstance().handleDeepLink(url)
  • 在continueUserActivity中,这是:Branch.getInstance().continue(userActivity)
如果未调用这些分支函数,则在恢复应用程序时将不会调用接收链接参数的分支初始化回调,因此链接参数将不可用

即使在调用这些函数时,openURL和continueUserActivity函数中的其他代码也可能会阻止访问分支代码。如果这些代码路径中有其他代码,请通过在分支函数或init回调中的代码行上设置断点进行测试,验证是否确实调用了相应的分支函数

另一种可能导致热启动问题而非冷启动问题的情况是,读取分支参数的代码在分支初始化回调外部调用时,以及在该回调完成之前。如果应用程序在didFinishLaunchingWithOptions中足够忙,则初始化回调可能会延迟足够长的时间,以使初始化回调在检查参数之前完成。稍后,当应用程序恢复时,应用程序中的事件可能会减少,并且检查参数的代码可能会在init回调完成之前进行检查。这种情况不太可能发生,但也有可能发生


为了避免这种“竞争条件”类型的情况,只需在init回调中检查分支链接参数,或者在收到已配置为指示init回调正在完成的通知后检查分支链接参数(您可以在SDK附带的TestBed Swift项目中看到以这种方式使用通知的示例,如下所示:).

Alex和Branch.io在这里:这真是太奇怪了!我们可以看到AppDelegate的相关部分和一个无法正常工作的链接示例吗?另外,您是否正在使用Facebook SDK?我们现在有一个已知的边缘案例,但是有一个workaround@AlexBauer使用应用程序代理的代码更新没有更新?我也有同样的问题