我想知道我是否在iPhone上有一个无线电流媒体应用程序,无论如何我可以让应用程序在后台运行时自动切换到新工作站吗? 到目前为止,我听说苹果不允许在后台执行任何操作。只有某些处于特定状态的事件才能运行,直到这些状态结束。
非常感谢
答案 0 :(得分:1)
根据iOS Developer Documentation,这是可能的。
在iOS 4及更高版本中,多任务处理允许应用程序在后台继续运行,即使用户切换到另一个应用程序,同时仍尽可能保持电池寿命。进入后台后,大多数应用程序会立即移至暂停状态。只有为用户提供重要服务的应用才能继续运行任何时间。
我们鼓励您尽可能避免在后台执行并暂停您的应用。如果您发现需要执行后台任务,请参考以下相关指南:
您需要实施至少一种特定的用户服务 您需要执行一个有限长度的任务 当您的应用未运行时,您需要使用通知来提醒用户注意一些相关的信息 系统会尽可能长时间地将暂停的应用程序保留在内存中,仅在可用内存量变低时才将其删除。内存中的剩余意味着您的应用程序的后续启动速度要快得多。同时,被暂停意味着您的应用程序不会快速耗尽设备的电池电量。
然后......
对于需要更多执行时间来实现的任务,您必须请求特定权限才能在后台运行它们而不会被暂停。在iOS中,只允许特定的应用类型在后台运行:
在后台播放用户可听内容的应用,例如音乐播放器应用 随时向用户通知其位置的应用,例如导航应用 支持互联网协议语音(VoIP)的应用程序
需要下载和处理新内容的报亭应用程序
从外部配件接收定期更新的应用程序
实现这些服务的应用程序必须声明它们支持的服务,并使用系统框架来实现这些服务的相关方面。声明服务可以让系统知道您使用哪些服务,但在某些情况下,系统框架实际上会阻止您的应用程序被暂停。
并且
必须由使用它们的应用程序事先声明对某些类型的后台执行的支持。应用程序使用其Info.plist文件声明对服务的支持。将UIBackgroundModes键添加到Info.plist文件,并将其值设置为包含以下一个或多个字符串的数组:
audio-该应用程序在后台播放用户的可听内容。 (此内容包括使用AirPlay播放音频或视频内容。) 位置 - 该应用程序可让用户随时了解其位置,即使在后台运行时也是如此 voip-该应用程序为用户提供了使用Internet连接拨打电话的能力 报亭 - 内容 - 该应用程序是一个报亭应用程序,可在后台下载和处理杂志或报纸内容 external-accessory-该应用程序适用于需要通过外部附件框架定期提供更新的硬件附件 bluetooth-central-该应用程序与蓝牙配件配合使用,需要通过CoreBluetooth框架定期提供更新。
上述每个值都可让系统知道应在适当的时间唤醒您的应用以响应相关事件。例如,开始播放音乐然后移动到后台的应用程序仍然需要执行时间来填充音频输出缓冲区。包括音频键告诉系统框架他们应该继续播放并以适当的间隔对应用程序进行必要的回调。如果应用程序不包含此密钥,则应用程序移动到后台时,应用程序播放的任何音频都会停止。
并且
连续播放音频的应用程序(即使应用程序在后台运行)也可以通过在其Info.plist文件中包含UIBackgroundModes键(带有音频值)来注册为背景音频应用程序。包含此密钥的应用必须在后台为用户播放可听内容。
背景音频应用的典型示例包括:
音乐播放器应用程序
通过AirPlay支持音频或视频播放的应用程序
VoIP应用程序
当UIBackgroundModes键包含音频值时,系统的媒体框架会自动阻止相应的应用程序在移动到后台时被挂起。只要它播放音频或视频内容,该应用程序将继续在后台运行。但是,如果应用停止播放音频或视频,系统会暂停播放。您可以使用任何系统音频框架来启动背景音频的播放,并且使用这些框架的过程不会改变。 (对于通过AirPlay播放视频,您必须使用媒体播放器框架来显示视频。)由于您的应用在播放媒体文件时未暂停,因此当您的应用处于后台时,回调会正常运行。但是,在回调中,您应该只做提供播放数据所需的工作。例如,流音频应用程序需要从其服务器下载音乐流数据并将当前音频样本推出以进行回放。您不应执行与播放无关的任何无关任务。
由于多个应用可能支持音频,因此系统会限制哪些应用可以在任何给定时间播放音频。前台应用程序始终具有播放音频的权限。此外,还可以允许一个或多个后台应用播放一些音频内容,具体取决于其音频会话对象的配置。您应该始终正确配置应用程序的音频会话对象,并仔细使用系统框架来处理中断和其他类型的音频相关通知。有关如何为后台执行配置音频会话对象的信息,请参阅“音频会话编程指南”。
要阅读完整文档,请转到答案开头的链接,然后转到标题Background Execution and Multitasking
。请记住检查安装了应用程序的设备是否具有多任务处理功能;只有iOS4 +设备才有它。