在AppDelegate.m中设置AVAudioSession类别

时间:2011-01-06 21:59:29

标签: objective-c avaudiosession

所以我不想问这个问题,但是我花了很多时间搜索Apple的文档和谷歌没有用。我只是尝试在appDidFinishLaunching时为我的app ONCE设置AVAudioSession类别。我有一个播放音频流的应用程序,我希望它在应用程序进入后台时继续播放,所以我正在尝试使用播放类别。这是我的AppDelegate.m代码:

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
// Set AudioSession
NSError *sessionError = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&sessionError];
[[AVAudioSession sharedInstance] setActive:YES error:&sessionError];
[[AVAudioSession sharedInstance] setDelegate:self];

// create window and set up navigation controller
[window addSubview:myNavController.view];
[window makeKeyAndVisible];

}

# pragma mark -
# pragma mark AVAudioSession Delegate Methods 
- (void)beginInterruption {
}
- (void)endInterruption {
}
- (void)endInterruptionWithFlags:(NSUInteger)flags {
}
- (void)inputIsAvailableChanged:(BOOL)isInputAvailable {
}

使用此代码,只要我按下主页按钮,音频就会淡出 应用程序在后台。非常感谢任何帮助,我希望如此 对于之前完成此操作的人来说,它是一种快速修复的答案。

2 个答案:

答案 0 :(得分:2)

首先将UIBackgroundModes密钥添加到Info.plist文件中(如果尚未添加)。 更多信息here

如果您已经这样做了,您使用哪个框架来播放媒体?

答案 1 :(得分:1)

感谢艾琳的帮助。除了我只是想提供它为我工作所必需的步骤之外,你的答案非常正确。我阅读了您发布的苹果文档,并出于某种原因将这些重要细节遗漏了:

  1. 在.plist文件中添加UIBackgroundModes键时,必须将其设为数组。
  2. 数组的第0项的值应为audio。
  3. 当然,您的应用还应该设置其音频会话类别并设置此键。