0

我使用了 ctcallcenter,并使用了 beginBackgroundTaskWithExpirationHandler,所以我只有 10 分钟的时间来调用我的代码。怎样才能让它更长,app proxBLE已经实现了?

4

1 回答 1

0

Apple 文档中,您只能在以下情况下延长执行时间。为此,您需要将UIBackgroundModes密钥添加到info.plist文件中。请参阅下面的详细说明。

实现长时间运行的后台任务

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

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

实现这些服务的应用程序必须声明它们支持的服务并使用系统框架来实现这些服务的相关方面。声明服务让系统知道您使用了哪些服务,但在某些情况下,实际上是系统框架阻止了您的应用程序被挂起。


声明应用支持的后台任务

对某些类型的后台执行的支持必须由使用它们的应用程序提前声明。应用程序使用其Info.plist文件声明对服务的支持。将UIBackgroundModes密钥添加到Info.plist文件并将其值设置为包含以下一个或多个字符串的数组:

  • audio— 应用程序在后台向用户播放有声内容。(此内容包括使用 AirPlay 的流式音频或视频内容。)
  • location- 该应用程序让用户随时了解他们的位置,即使它在后台运行。
  • voip— 该应用程序使用户能够使用 Internet 连接拨打电话。
  • newsstand-content— 该应用程序是一个报亭应用程序,可在后台下载和处理杂志或报纸内容。
  • external-accessory— 该应用程序与需要通过外部附件框架定期提供更新的硬件附件配合使用。
  • bluetooth-central— 该应用程序与需要通过核心蓝牙框架定期提供更新的蓝牙配件配合使用。
  • bluetooth-peripheral——应用通过Core蓝牙框架支持外设模式下的蓝牙通信。

前面的每个值都让系统知道您的应用程序应该在适当的时间被唤醒以响应相关事件。例如,一个开始播放音乐然后移动到后台的应用程序仍然需要执行时间来填充音频输出缓冲区。包含audio密钥会告诉系统框架它们应该继续播放并以适当的时间间隔对应用程序进行必要的回调。如果应用程序不包含此键,则当应用程序移至后台时,应用程序正在播放的任何音频都会停止。

于 2012-10-27T05:53:19.047 回答