1

我的客户要求我开发一些应用程序,定期检索用户位置和手机电池状态,然后将它们发送到我们的后端服务器进行数据分析,然后通过推送通知反馈。

但是通过 app doc,我从 apple ios dev doc了解到:

对于需要更多执行时间来实现的任务,您必须请求特定权限才能在后台运行它们而不会被挂起。在 iOS 中,只允许特定类型的应用程序在后台运行:

在后台向用户播放有声内容的应用程序,例如音乐播放器应用程序

让用户随时了解其位置的应用程序,例如导航应用程序

支持互联网协议语音 (VoIP) 的应用程序

需要下载和处理新内容的报亭应用

从外部配件接收定期更新的应用程序

我想知道如果我们将这个应用程序包装成一些导航应用程序这样我们可以有长时间运行的后台任务,这是否可行?appstore 会拒绝我们的应用吗?

顺便说一句,Apple 对导航应用程序的定义是什么?

4

2 回答 2

2

您可以考虑使用:

[CLLocationManager startMonitoringSignificantLocationChanges];

这将导致您的应用程序在位置发生显着变化时被终止,从而重新启动您的应用程序,从而允许您以相当定期的时间间隔更新服务器上的详细信息,假设用户正在移动。这不需要任何特殊的背景许可。从文档:

如果您启动此服务并且您的应用程序随后终止,则系统会在新事件到达时自动将应用程序重新启动到后台。在这种情况下,传递给应用程序委托的 locationManager:didUpdateLocations: 方法的选项字典包含键 UIApplicationLaunchOptionsLocationKey 以指示您的应用程序是由于位置事件而启动的。

您的另一个选择是将应用程序配置为需要在后台持续更新位置,但在不了解应用程序的主要功能的情况下,很难知道这是否会通过商店提交。

于 2013-05-25T08:12:37.663 回答
0

https://github.com/yarodevuci/backgroundTask在此处检查我的代码 我正在使用播放空白 wav 文件的音频播放器 在 IOS 8 上完美运行 24 小时内电池使用量约为 10% 如何使用:

var backgroundTask = BackgroundTask()
backgroundTask.startBackgroundTask() //Starts playing blank audio file. You can run NSTimer() or whatever you need and it will continue executing in the background.

backgroundTask.stopBackgroundTask() //Stops the task
于 2016-08-31T04:43:59.580 回答