Network.Framework的iOS后台使用

Posted

技术标签:

【中文标题】Network.Framework的iOS后台使用【英文标题】:iOS background usage of Network.Framework 【发布时间】:2019-03-07 21:06:49 【问题描述】:

我编写了一个简单的基于 WiFi 的应用程序,使用 TCP on Network.Framework 每 10 秒从特定端口上的远程服务接收大约 80 个字节。我想在前台和后台将此数据写入文件。

问题是background modes 中的哪一个/被允许/最符合此要求?

所有的智慧都欣然接受。

【问题讨论】:

【参考方案1】:

如果不了解您的应用程序的任何其他信息(它是音乐应用程序吗?、位置?、VoIP?、蓝牙?),很难说出您可能会做什么。但是有两类后台操作:

    进入后台时正在进行的操作可以完成。 允许特定类型应用程序的后台操作。请参阅您所拥有的有关后台模式的链接中的“实现长时间运行的任务”。

第一个并不真正适用于您,因为这是正在进行的。在第二项中,我猜“后台获取”是最合适的一项。

请注意,您不一定会像您希望的那样经常被调用。但是由于您的时间间隔很长(10 秒),所以我猜几百毫秒的延迟不会特别有害。

但还要注意“启用此模式并不能保证系统会给您的应用任何时间执行后台提取。系统必须平衡您的应用获取内容的需求与其他应用和系统本身的需求。 "

【讨论】:

后台提取不起作用。这种情况最多每 3 或 4 小时发生一次。如果您不想进入 App Store,您可以“滥用”后台音频播放“静音”。如果您想要 App Store 批准,那么我认为没有合适的解决方案 第一个问题是防止进入后台时断开连接。 network.framework 在进入后台时进入取消状态(连接关闭)。

以上是关于Network.Framework的iOS后台使用的主要内容,如果未能解决你的问题,请参考以下文章

Swift Network.framework WebSocket 握手 nil 返回

Swift Network.framework:为没有 IP 连接的以太网接口获取 NWInterface

Case1-basic network framework/Related organization‘s name

在 iOS8 中使用 NSUrlSession 使用流请求进行后台上传

iOS : HKObserverQuery 的后台更新completionHandler 的使用

使用 iOS 后台传输服务下载多个文件