iOS后台应用网络访问

Posted

技术标签:

【中文标题】iOS后台应用网络访问【英文标题】:iOS background application network access 【发布时间】:2012-03-25 16:22:09 【问题描述】:

我有一个需要位置跟踪的应用程序,我认为它完全符合允许的背景模型之一。但是,当位置发生重大变化时,我需要发布到网络服务。我已经看到在后台处理中禁止状态网络访问的文章,但我没有在 Apple 的文档中阅读。

有谁知道在后台进程中进行偶尔且非常快速的网络更新是否符合犹太教(Apple 政策)?

【问题讨论】:

【参考方案1】:

好点,根据 Apple 文档,仅允许在后台使用以下用途,并且应注册每个服务:

音频 - 应用程序在后台向用户播放可听内容。 (此内容包括流式音频或视频内容 使用 AirPlay。) 位置 - 该应用让用户随时了解他们的位置,即使在后台运行时也是如此。 voip - 该应用使用户能够使用互联网连接拨打电话。 newsstand-content - 该应用是一款报亭应用,可在后台下载和处理杂志或报纸内容。 external-accessory - 该应用程序与需要通过外部定期交付更新的硬件附件配合使用 配件框架。 bluetooth-central — 该应用程序与蓝牙配件配合使用,该配件需要通过 CoreBluetooth 框架。

除此服务外,您还可以在后台创建一个有限长度任务,这实际上使您有可能结束网络进程。

如果您的应用正在执行某些重要任务,这可能很重要, 例如将用户数据写入磁盘或下载重要文件 来自网络服务器。

关于您的问题,如果您在后台运行定位服务,您是否可以进行快速网络连接还不是很清楚。我会说是短连接,但不完全确定。自 ios 4.0 以来,这种用法被拒绝并在文档中明确,现在该部分已被删除。

【讨论】:

【参考方案2】:

是的,如果您使用背景只是为了快速连接。 Apple 不会允许您随意在后台运行。

如果您的应用不属于网络电话、音乐或 GPS 类别;那么你就不能在后台运行了。

更多:Update my app when it is in background


你可以使用ASIHTTPRequest。

ASIHTTPRequest 有一个属性setShouldContinueWhenAppEntersBackground:。默认是NO,你可以打开YES,这样你就有后台网络进程了。

【讨论】:

谢谢。澄清一下,问题实际上是苹果在后台运行时是否允许网络访问。 再次感谢,但该链接并没有真正回答我的问题 - 这更多是关于完成现有网络请求。我想在后台无限期地运行并执行偶尔的网络请求(假设每小时发送 1000 个字节)。这是 Apple 关于后台应用程序中网络访问的政策问题。 那么,答案是否定的。苹果不允许你这样做(如果可能的话)。 你能指出我写的任何东西来自 Apple 或有人为此拒绝了应用程序吗?这对我来说非常重要,所以我需要确定是或否。 有可能。尝试查看其他实现,例如ASIHTTPRequest【参考方案3】:

Apple 文档似乎对严格的政策有点不清楚。应用商店中肯定有应用程序在作为基于位置的应用程序在后台运行时进行零星的网络调用。 Geoloqi 应用程序就是一个例子。

【讨论】:

以上是关于iOS后台应用网络访问的主要内容,如果未能解决你的问题,请参考以下文章

iOS 应用程序 - 在某些设备上无法通过蜂窝网络访问我们的域

iOS 9/10强制使用https访问网络,使用了第三方SDK的应用需要配置的信息

react-native ios访问网络 需要啥权限

在改造并行网络调用中处理后台刷新令牌调用

Android系统,如何设置某个应用程序不允许访问网络?

允许 HTML5 Web 应用在浏览器未聚焦时访问位置 (iOS)