在iOS中实现长时间运行的后台任务
我的客户要求我开发一些应用程序,定期检索用户位置和手机电池状态,然后将它们发送到后端服务器进行数据分析,然后通过推送通知进行反馈 但通过app doc,我从apple ios开发人员那里了解到: 对于需要更多执行时间才能执行的任务,必须 请求特定权限以在后台运行它们,而无需 他们被停职。在iOS中,仅允许使用特定的应用程序类型 在后台运行: 在后台向用户播放音频内容的应用程序, 例如音乐播放器应用程序 让用户随时了解自己的应用程序 位置,如导航应用程序 支持 互联网语音协议(VoIP) 需要更新的报摊应用程序 下载并处理新内容 接收定期更新的应用程序 从外部配件 我想知道如果我们把这个应用程序包装成一些导航应用程序,这样我们就可以有长期运行的后台任务,这是否可行?appstore是否会拒绝我们的应用在iOS中实现长时间运行的后台任务,ios,app-store,background-process,Ios,App Store,Background Process,我的客户要求我开发一些应用程序,定期检索用户位置和手机电池状态,然后将它们发送到后端服务器进行数据分析,然后通过推送通知进行反馈 但通过app doc,我从apple ios开发人员那里了解到: 对于需要更多执行时间才能执行的任务,必须 请求特定权限以在后台运行它们,而无需 他们被停职。在iOS中,仅允许使用特定的应用程序类型 在后台运行: 在后台向用户播放音频内容的应用程序, 例如音乐播放器应用程序 让用户随时了解自己的应用程序 位置,如导航应用程序 支持 互联网语音协议(VoIP) 需要更新
[CLLocationManager startMonitoringSignificantLocationChanges];
如果在位置发生重大变化时应用程序被终止,则这将导致应用程序重新启动,从而允许您在假设用户正在移动的情况下,以相当固定的时间间隔更新服务器上的详细信息。这不需要任何特殊的背景许可。从文档中:
如果启动此服务并随后终止应用程序,则如果出现新事件,系统会自动将应用程序重新启动到后台。在这种情况下,传递给应用程序委托的locationManager:didUpdateLocations:方法的选项字典包含UIApplicationLaunchOptionsLocationKey键,以指示应用程序是由于位置事件而启动的
您的另一个选项是将应用程序配置为需要在后台连续更新位置,但如果不知道应用程序的主要功能,就很难知道这是否能通过商店提交。检查我的代码这里我使用的音频播放器可以播放空白的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
问问苹果。你需要非常清楚应用程序的实用性,不要试图掩饰它的功能。嗨,Wain,谢谢你的回复。很抱歉,因为保密协议,我不能告诉更多的要求。我可能会发邮件给苹果公司寻求答案。嗨,塔克,谢谢你的提示。我需要每隔30分钟不断地重新检查电池状态。我们的应用程序大多类似于公用事业和LBS社区的混合体。位置是必要的,但不是核心。