iOS 5 - 在应用程序启动时在后台播放音频文件

时间:2012-02-08 18:16:12

标签: ios5

我是iOS用户并开发应用程序。 我一直在寻找一个简单的例子来说明如何在应用程序启动时在后台播放音频文件。由于我正在开发的应用程序与音乐课程有关,因此我需要在主屏幕处于活动状态时播放此音频。这就是我到目前为止所做的......

  1. 创建了一个主屏幕(UIViewController),其中包含一些背景图像和一个按钮,可以进一步导航到应用程序。
  2. 在.plist
  3. 中设置“必需的背景模式”
  4. 将音频文件添加到项目中
  5. 在我的控制器中,我有以下代码块。

    - (void)viewDidLoad
    {
        [super viewDidLoad];   
    
        //Set some labels here
        //Set a background image
    
         NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"shrutiFsharp" ofType:@"mp3"]]; 
         AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
    
        [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
        [[AVAudioSession sharedInstance] setActive: YES error: nil];
        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    
        [audioPlayer play];
    
    }
    
  6. 所有标签,背景图片,按钮都显示正常..我可以导航到另一个视图。但是当我在主屏幕上时,我无法播放音频文件。我正在运行iPhone 5.0模拟器。

    我在控制台中看不到任何错误消息。

    您在此处看到的代码来自已发布的示例..但我不太清楚为什么这不起作用。我可能会遗漏一些东西。任何帮助表示赞赏。

    -KD

1 个答案:

答案 0 :(得分:0)

您应该按照预期的方式使用错误参数。完全有可能音频播放器试图告诉你为什么它不能继续,但你忽略了它!

NSError *error = nil;
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url
                                                                    error:&error];
if (error) {
    NSLog(@"audio player error: %@", [error localizedDescription]);
}