在后台运行应用程序超过10分钟

use*_*597 48 background-process ios

我正在尝试将iOS应用程序保持活动状态超过10分钟,当它进入后台状态时.

我该如何实现呢.

Bri*_*ley 57

请参阅iPhoneAppProgrammingGuide的 "后台执行"部分.简而言之,您的应用必须是以下类型之一:

  • 在后台播放用户可听内容的应用,例如音乐播放器应用
  • 随时向用户通知其位置的应用,例如导航应用
  • 支持互联网协议语音(VoIP)的应用
  • 需要下载和处理新内容的报亭应用程序
  • 从外部配件接收定期更新的应用程序

您必须按如下方式添加到Info.plist:将UIBackgroundModes键添加到Info.plist文件并将其值设置为包含以下一个或多个字符串的数组:

  • audio-该应用程序在后台播放可听内容给用户.(此内容包括使用AirPlay播放音频或视频内容.)
  • location-该应用程序可让用户随时了解其位置,即使它在后台运行也是如此.
  • voip-该应用程序使用户能够使用Internet连接拨打电话.
  • 报亭 - 内容 - 该应用程序是一个新闻台应用程序,可在后台下载和处理杂志或报纸内容.
  • external-accessory-该应用程序适用于需要通过外部附件框架定期提供更新的硬件附件.
  • bluetooth-central-该应用程序与蓝牙配件配合使用,需要通过CoreBluetooth框架定期提供更新

请注意,审核流程的一部分将进行检查,以确保您的应用完成了与后台处理相关的操作.

  • 请注意,仅设置这些类型不会使应用程序本身保持活动状态.例如:当您播放音频时,它将在音乐期间保持活跃状态​​.但是当你的歌曲结束时,该应用仍然可以暂停. (3认同)

ing*_*.am 20

这是我使用beginBackgroundTaskWithExpirationHandler完成的.

  • 编写一个启动后台任务的方法.
  • 在该后台任务中,运行一个NSTimer不超过10分钟的预定(非重复)时间.出于我的情况,我使用了5分钟.
  • 一旦NStimer选择器触发,结束后台任务,然后立即调用您之前编写的方法开始另一个后台任务.
  • 如果要安排在特定时间运行的方法,则必须在后台任务中检查它们.

这个解决方案并不是很理想,但仍然很耗电但会做你想要的.

编辑:自iOS7以来,我建议你阅读这篇优秀的帖子.

  • @ ing0更新:我尝试了几种代码组合,似乎无法让我的应用程序在后台无限期地运行(使用此方法).你有工作代码吗? (6认同)
  • Apple是否批准App Store的这个应用程序? (2认同)