应用程序处于后台时的 iOS 可达性

Posted

技术标签:

【中文标题】应用程序处于后台时的 iOS 可达性【英文标题】:iOS Reachability when app is in Background 【发布时间】:2015-02-18 17:52:25 【问题描述】:

我的应用程序需要有关用户是否连接到 Wifi 网络而不是互联网连接的确切信息,因此请不要对用例发表评论。任务是:用户需要验证他们的 Wifi 是否已连接,但如果他们没有任何 Wifi 网络可连接,他们可以稍后再做。为此,我需要我的应用在用户稍后连接到 Wifi 网络时通知用户,现在您可以继续进行测试。

我可以在后台获取请求中使用可达性来完成此操作吗?应用可以在后台提取中执行的任务是否有任何限制?

【问题讨论】:

为什么不检查应用程序的启动情况? 请阅读任务。当应用程序在前台时,我已经在这样做了。当应用程序不活动时,我需要一种方法来做到这一点。 是的,您可以在后台使用可达性。 【参考方案1】:

这在一般情况下是无法解决的。您不能无限期地在后台运行任意代码(除非您由于其他原因已经是允许的后台任务,例如定位服务或 VoIP,但这些仍然有限制)。当可达性改变时,你不能请求启动。

但是,您可以将NSURLRequest 配置为不使用蜂窝访问。这与“无线”并不完全相同,但它很接近并且可能是您的实际意思(您不清楚为什么“无线”是标准)。然后,您可以使用NSURLSessionUploadTaskNSURLSessionDownloadTask 要求操作系统在可能的情况下执行操作(当您在后台时,不会唤醒您或以任何方式让您参与其中)。如果该请求是针对您的服务器的,那么您可以使用推送通知来提醒用户并实现您所描述的体验。

【讨论】:

以上是关于应用程序处于后台时的 iOS 可达性的主要内容,如果未能解决你的问题,请参考以下文章

应用程序处于后台时的连接状态和 XMPP 处理

应用程序处于后台时状态栏下方的 IOS 文本

应用程序在后台或暂停时的位置更新

应用程序未运行时的 iOS 10 远程通知

应用程序在后台时的 NSURLConnection

应用程序关闭时的 iOS 定位服务启用/禁用事件