手机锁定后,AVSpeechSynthesizer将无法工作

时间:2013-10-31 14:57:58

标签: ios objective-c avspeechsynthesizer

我想在手机锁定时使用AVSpeechSynthesizer,但是当我锁定屏幕时音频会停止。我使用的是模拟器,而不是实际的设备。我在这个网站上看到了其他几个与此相似的问题,我按照他们的建议,但它仍然无效。

在app delegate中,我将音频会话类别设置为AVAudioSessionCategoryPlayback

- (void)configureAudioSession{
    NSError *error = NULL;
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&error];
    if(error) {
        NSLog(@"Error setting category of audio session: %@",error.description);
    }
    error = NULL;
    [[AVAudioSession sharedInstance] setActive:YES error: &error];
    if (error) {
        NSLog(@"Error activating audio session: %@",error.description);
    }
}

我检查了项目设置 - >功能 - >背景模式下的'音频和播放'模式。

谁能告诉我如何让它发挥作用?

2 个答案:

答案 0 :(得分:2)

这里是我如何让AVSpeechSynthesizer在手机闲置,电话被锁定或应用程序转到后台时继续说话。功能(iOS8)

步骤1)打开info.plist并添加密钥"所需的背景模式"。在此数组中,添加名为&#34的字符串;应用播放音频或使用AirPlay播放音频/视频"。

步骤2)将以下内容添加到您的应用代理didFinishLaunchingWithOptions:

NSError *error = NULL;
    AVAudioSession *session = [AVAudioSession sharedInstance];
    [session setCategory:AVAudioSessionCategoryPlayback error:&error];
    if(error) {
        // Do some error handling
    }
    [session setActive:YES error:&error];
    if (error) {
        // Do some error handling
    }

步骤3)在您的设备上运行并测试它!

答案 1 :(得分:0)

我能够按照这篇文章让它在一个月前上班:

AVAudioPlayer stops playing on screen lock even though the category is AVAudioSessionCategoryPlayback

基本上,您需要在应用的.plist文件中输入内容。我不确定这会在模拟器上运行,因此您可能希望在实际设备上进行测试。