进入地理围栏时发送请求,此时没有网络连接

Sending request when entering geofence and no network connection at that moment

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

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

我很难相信这是不可能的,因为使用 Android 上的 BroadcastReceiver 如此简单。

尝试BackgroundFetch

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

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

如上所示的简单调用将在 1 小时后唤醒您的应用。按照 link 中的步骤操作,您就会明白。