1

我有一段代码,我在其中进行服务器调用,并根据响应播放声音。现在,当我的应用程序在后台或我的设备被锁定时,这不起作用。

即使应用程序在后台或设备被锁定,有什么方法可以执行这段代码(服务器调用和响应处理)?

4

1 回答 1

5

没有通用的解决方案,这是设计使然。(Apple 不希望您在后台运行潜在的 CPU 和电源密集型进程并降低用户体验。)

有一些有限的情况可供选择:

  1. 你说你想播放声音。如果你的意思是“播放音乐”或一些这样的流媒体,那么你的应用程序可以注册一个音频后台任务来执行。请注意,您实际上必须在流式传输音频;Apple 理所当然地拒绝尝试使用这种方法来规避一般情况禁令的应用程序,并将相应地拒绝您的 App Store 提交。
  2. 您可以反转您的方案并让服务器通过Apple Push Notification 服务发送推送通知。根据用户的设置,可能会产生警报、标记或声音。如果您不流式传输音频,这可能最适合您。
  3. 如果您真正打算做的是完成上传或下载(并且声音是完成通知),您可以在应用程序名义上后台或设备锁定后请求一些额外的时间来完成该任务。-[UIApplication beginBackgroundTaskWithExpirationHandler:]在适当的方法中使用fromUIApplicationDelegate来注册这样的任务。请注意,您完成任务的时间有限(但可观),我认为您无法在此模式下播放媒体。
于 2012-07-03T00:40:59.940 回答