ios - 进入地理围栏且此时无网络连接时发送请求

标签 ios swift geofencing

我的应用程序在关闭时会监听 3 个地理围栏。当进入地理围栏时,标识符被发送到后端。一切都很好,但我还想处理进入地理围栏时没有网络连接的情况。就像等待发送请求直到有连接一样。当应用程序关闭时,这必须起作用。

它仅适用于 iOS 11 或更高版本的设备。等待连接不起作用,我认为是因为地理围栏的时间窗口太小。当我启动应用程序时,特定请求已成功发送,因此它确实有效,但如果应用程序关闭则无效。我必须手动启动应用程序才能在有连接时发送待处理的请求。我还尝试了 dataTask 和 uploadTask,但它们的行为与 waitsForConnectivity 相同。我还认为将来不可能通过计时器调度任务来检查是否存在网络连接?因为应用程序已关闭。 这可能吗?我认为做到这一点的唯一方法是使用远程推送通知,但只有 Voip 才允许运行代码作为对推送通知的响应。

我很难相信这是不可能的,因为使用 Android 上的 BroadcastReceiver 就可以轻松做到这一点。

最佳答案

尝试BackgroundFetch

您可以使用这种方法以一定的周期间隔唤醒您的应用,而无需用户交互。一旦您的应用程序唤醒,请检查是否有一些待发送的数据要发送到服务器。如果是,请发送。如果没有互联网连接,没问题,将您的应用程序编程为每隔 5 小时唤醒一次。

// Fetch data once an hour.
   UIApplication.shared.setMinimumBackgroundFetchInterval(3600)

像上面这样的简单调用将在 1 小时后唤醒您的应用程序。按照链接中的步骤操作,您就会明白。

关于ios - 进入地理围栏且此时无网络连接时发送请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56479265/

相关文章:

ios - 如何快速访问字典数组

ios - 错误的 iOS8 状态栏?

ios - Ionic 4 build 不适用于 ios 10.3

ios - Strideable.distance(to : A) -> A. Stride in conformance Int64 + 124) 的协议(protocol)见证 - 此错误消息是什么意思?

objective-c - 如何在 iOS 中监控后台位置?

ios - 如何在 iOS 中使用 ViewPager 和 Android 中的 ViewPagerIndicator 等标题实现页面之间的滑动?

ios - 如何在 ios swift2 中使用解析获取用于 google+ 登录的 session token

android - 如何在 Android 中使 Geo Fencing 警报更准确

iOS 应用程序 Ping 用户喜欢查找我的 iphone "Play a Sound"

android - 如何在Geofence android中添加后台服务