在后台停止音频
Posted
技术标签:
【中文标题】在后台停止音频【英文标题】:stop audio while in background 【发布时间】:2013-04-10 20:37:16 【问题描述】:有一个名为 IHeartRadio 的应用程序可让您设置睡眠计时器,该计时器将在指定时间间隔后关闭音频。
您首先选择要收听的电台,然后选择广播电台停止播放的睡眠时间。应用不需要处于前台即可发生这种情况。
应用程序如何?
一种理论是设置带有静音音频的 UILocalNotification。然后 UILocalNotification 将接管设备的音频,实际上使正在播放的任何音频静音。那没用。
计时器不在后台工作,这不会在后台留下太多基于时间的行为。
【问题讨论】:
【参考方案1】:When the UIBackgroundModes key contains the audio value, the system’s media frameworks automatically prevent the corresponding app from being suspended when it moves to the background. As long as it is playing audio or video content, the app continues to run in the background. However, if the app stops playing the audio or video, the system suspends it.
来自ios App Programming Guide。
【讨论】:
嗯。根据我的经验,即使我在应用程序的 plist 中的“必需的背景模式”下声明了“应用程序播放音频”,NSTimer 也不起作用。如果不是 UILocalNotification 或 NSTimer,我还能采取哪些其他基于时间的操作? 我认为这可能是因为我的应用没有播放任何音频。我将尝试将静音与播放类别混合,看看是否有效。【参考方案2】:您可以在AppDelegate
中使用applicationDidEnterBackground
事件来处理应用程序进入后台并在此方法中停止音频。
- (void)applicationDidEnterBackground:(UIApplication *)application
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
// add your audio stopping code ..
【讨论】:
也许我不清楚:我想在应用程序已经在后台而不是在后台运行后停止音频。以上是关于在后台停止音频的主要内容,如果未能解决你的问题,请参考以下文章
Phonegap / Cordova 在后台 IOS 一段时间后停止音频