我需要编写一个 iOS 应用程序,每 30 分钟向服务器发送一次数据。当应用程序在后台时,这可以工作吗?它有多可靠?
3 回答
无法在您请求的时间间隔内永久地在后台执行任务。您可以通过开发人员连接请求特定许可,但我必须警告您,您需要一个非常有说服力的论据。我在下面包含了文档,也许您的请求属于可以永久运行的分组之一。或者,也许您可以使用其中一个长时间运行的后台线程并对其进行调整,使其能够完成您正在尝试的任务。
直接来自 Apple 的文档:
实现长时间运行的后台任务
对于需要更多执行时间来实现的任务,您必须请求特定权限才能在后台运行它们而不会被挂起。在 iOS 中,只允许特定类型的应用程序在后台运行:
- 在后台向用户播放有声内容的应用程序,例如音乐播放器应用程序
- 让用户随时了解其位置的应用程序,例如导航应用程序
- 支持互联网协议语音 (VoIP) 的应用程序 需要下载和处理新内容的报亭应用程序
- 从外部附件接收定期更新的应用程序
实现这些服务的应用程序必须声明它们支持的服务并使用系统框架来实现这些服务的相关方面。声明服务让系统知道您使用了哪些服务,但在某些情况下,实际上是系统框架阻止了您的应用程序被挂起。
~/行尾
在 iOS7 中引入了新的多任务 API,因此可以无限期运行后台任务。Apple 鼓励使用NSURLSession API,它创建一个后台会话并将传输排入队列
iOS7中还引入了新的UIBackgroundModes,包括“Background Fetch”和“remote-notifications”,有助于运行后台服务
正如https://stackoverflow.com/users/1515108/im-lp所说,除了 ios 提供的一些特殊情况外,没有办法将其作为服务。但是你可以模拟它。这篇文章回答了如何:
https://stackoverflow.com/a/19121250/2835520
我希望它会有所帮助!