AVAudioSession可以在没有MixWithOthers的后台状态下激活吗?

时间:2017-01-24 00:45:04

标签: ios iphone avfoundation avaudiosession

因此,我的应用程序在后台运行,因为CoreLocation已请求AlwaysAuthorization。这可以防止应用程序达到暂停状态。它保持在后台状态并正在接收位置事件。在一些位置事件之后,我想激活AVAudioSession并播放一些声音。如何正确激活会话(在此后台应用程序中),我现在正在使用前台中的其他应用程序,此应用程序正在播放音轨。假设我在Youtube应用中观看了一些视频,而我的后台应用需要立即播放音频。在这种情况下,我在激活音频会话方面遇到了问题。

在这种情况下,我无法使用AudioToolbox播放引擎,因为即使启用了铃声/静音开关,也需要播放这些声音。

我知道我需要使用AVAudioSessionCategoryPlayback类别。我也不希望其他应用同时播放,因此我没有使用MixWithOthersDuckOthers类别选项。

我已启用UIBackgroundModes在后​​台播放音频。

当app处于后台时,如何激活此类会话,而其他应用当前正在播放音频而未启用任何混音选项。如何中断当前前台应用程序中的音频会话,以便我的后台应用程序可以将其激活播放时间。播放结束后,我的计划是在后台停用音频会话,并通知其他应用,他们可以恢复播放。

1 个答案:

答案 0 :(得分:0)

didFinishLaunchingWithOptions类的AppDelegate.m方法中添加以下3行,然后再次测试该应用。如果有任何问题,请告诉我。

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
[UIApplication sharedApplication].idleTimerDisabled = YES;