1

根据我们的要求,即使应用程序在后台,我们也需要播放声音。我们[AVAudioPlayer Play]用于播放声音的目的。

如果应用程序在前台,它可以工作。但是,如果应用程序在后台并且我们也在音乐播放器中播放歌曲,然后控制进入[AVAudioPlayer Play]语句,则没有任何反应。

我们已经浏览了很多链接,在 plist 中添加了背景模式,也添加了 [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];,但没有成功。

请建议是否有其他选择。

4

3 回答 3

11

AVAudioPlayer只需在初始化' 实例的位置添加这三行:

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"mySong" ofType:@"mp3"]];

AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];

// These lines need to be added:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

[audioPlayer play];
于 2013-07-16T09:10:18.360 回答
3

要在后台播放音频,只需在info.plist中添加这样的数组在此处输入图像描述

并将其检查到不在模拟器中的真实设备中

于 2013-02-14T12:26:17.450 回答
2

尝试这个,

AppDelegate.m

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    __block UIBackgroundTaskIdentifier task = 0;
    task=[application beginBackgroundTaskWithExpirationHandler:^{
    NSLog(@"Expiration handler called %f",[application backgroundTimeRemaining]);
    [application endBackgroundTask:task];
    task=UIBackgroundTaskInvalid;
    }];
}
于 2013-07-26T11:02:12.497 回答