ios - `application:openURL:options` 期间网络连接丢失

标签 ios react-native networking nsurlsession deep-linking

我们正在使用深层链接来完成对我们正在开发的应用程序的验证。所述深层链接导致应用程序委托(delegate)方法:

- (BOOL)application:(UIApplication *)application
   openURL:(NSURL *)url
   options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{

被召唤。此应用程序使用 React Native,使用内置的 Linking API。有时当我们得到 Linking 回调时发出网络请求,但有时我们会遇到网络错误:

Task <D47D1F90-E2D1-4AB7-8706-8737B68CC5E8>.<180> finished with error [-1005] Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." UserInfo={_kCFStreamErrorCodeKey=53, NSUnderlyingError=0x283352ac0 {Error Domain=kCFErrorDomainCFNetwork Code=-1005 "(null)" UserInfo={NSErrorPeerAddressKey=<CFData 0x281ed9130 [0x1e9babcb0]>{length = 16, capacity = 16, bytes = 0x100201bb34d2847e0000000000000000}, _kCFStreamErrorCodeKey=53, _kCFStreamErrorDomainKey=1}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <D47D1F90-E2D1-4AB7-8706-8737B68CC5E8>.<180>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDataTask <D47D1F90-E2D1-4AB7-8706-8737B68CC5E8>.<180>"

我有一个相当广泛的谷歌,它似乎表明这可能是在后台发出网络请求时引起的,但是 Apple 在文档中非常清楚地说明了这种方法:

If a URL arrives while your app is suspended or running in the background, the system moves your app to the foreground prior to calling this method.

有什么我们不应该在这里做的吗?有没有其他人看到过类似的问题?

更新

这似乎在应用程序启动后第一次打开链接时工作正常,但后续调用失败。似乎没有任何东西以不同的顺序被调用,所以我们会看到这种模式非常令人困惑!

最佳答案

这是一个已知问题,URLSession 被保留但底层 TCP 套接字被操作系统回收,Apple 支持人员建议了几个解决方案,可以查看 here .

在我的场景中,我不想在 React Native 中使用内部 URLSession ,所以我们现在只需重试一次请求就可以了!

关于ios - `application:openURL:options` 期间网络连接丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59858262/

相关文章:

ios - 从unity3d(vuforia)到ios渲染带有图像目标的3d对象(立方体)?

ios - UISearchBar无法显示正确的tintColor

javascript - 对 firebase currentUser 所做的更改只有在完全重新加载应用程序后才会反射(reflect)出来

ios - 从完成处理程序调用父函数的返回

python - 如何在 python 中从附近主机检索 MAC 地址?

ios - 遍历 NSArray 工作......有时

javascript - 为什么当 redux 状态改变时 props.screenProps 会变成 undefined

react-native - 这个 refs 在方法中变得未定义

java - 反序列化对象而无需访问Java中的类字节码

ios - 如何使用 Multipeer 连接(Wifi 网络)计算两个 iOS 设备之间的距离?