代码之家  ›  专栏  ›  技术社区  ›  pm_labs

是否可以在模拟器上测试iOS4多任务/背景音乐播放?

  •  9
  • pm_labs  · 技术社区  · 15 年前

    我已经添加了 UIBackgroundModes info.plist中的属性,其数组项为“ audio “并添加了设置音频会话的调用: [session setCategory: AVAudioSessionCategoryPlayback error: &error]; .

    然而,我唯一的测试设备是iPod touch 2G,它不支持多任务。我试过模拟器,但当我切换到Safari时,音乐停止播放。但是当我切换回我的应用程序时,这首歌会继续播放到比我离开应用程序时更远的位置。

    它似乎继续在后台播放,但我在使用另一个应用程序(Safari)时没有听到应用程序的音频。

    4 回复  |  直到 13 年前
        1
  •  18
  •   Tony    15 年前

    我也有同样的问题。在模拟器中,音频暂停,当你启动它时,它恢复播放。但在设备上进行的测试效果很好,音频继续在后台播放。我使用的示例代码是

    AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    [audioPlayer play];
    
        2
  •  16
  •   iamj4de    14 年前

    iPhone模拟器不支持背景音频。 资料来源:WWDC 2010,第109部分-采用多任务处理第2部分。

        3
  •  2
  •   Raviraja    15 年前

    你是否在信息列表中添加了所需的背景模式键… 如果不尝试添加此… 转到info.plist文件,点击添加“所需背景模式”,点击一个小三角形,你会在添加“app plays audio”中得到项目0… 这很管用…

    拉维拉贾

        4
  •  1
  •   Torsten Marek    13 年前

    这对我来说甚至在设备上也有效。

    AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    [audioPlayer play];
    

    这和设置info.plist键以启用背景音频是在iPhone应用程序中启用背景音频播放所需的。但是,如果您希望播放一系列音频文件,则需要将每个播放操作作为后台任务执行,如下所示:

    UIBackgroundTaskIdentifier bgTask = [[UIApplication sharedApplication]beginBackgroundTaskWithExpirationHandler:nil];
    

    执行必要的操作:

    [[UIApplication sharedApplication] endBackgroundTask:bgTask];
    
    推荐文章