iOS 后台播放语音

作者: xiao彰 | 来源:发表于2017-04-12 11:03 被阅读1101次

    最近做的一个项目有这个需求,在某些时候,应用能触发语音,就算在后台,应用也能播放语音。

    然而在普通情况下,由于苹果独特的机制,在应用退到后台的时候,程序是不会继续运行的,所以只能另想办法。

    配置后台播放语音

    选中Targets-->Capabilities-->BackgroundModes-->ON,如图所示

    或者在Targets-->info上添加

    静默推送

    静默推送---这个方法能实现这个需求,就算应用在后台挂起了,但是应用收到通知后还能在后台(background)状态下运行一段代码。

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler {

       completionHandler(UIBackgroundFetchResultNewData);

       //手机振动起来

       AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

      //后台播放音频设置

       AVAudioSession *session = [AVAudioSession sharedInstance];

       [session setActive:YES error:nil];

       [session setCategory:AVAudioSessionCategoryPlayback error:nil];

       [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

       //播放语音

    }

    播放语音

    AVSpeechUtterance *utterance  = [AVSpeechUtterance speechUtteranceWithString:@"测试语音"];

    utterance.pitchMultiplier=0.8;

    //中式发音

    AVSpeechSynthesisVoice *voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"];

    AVSpeechSynthesizer *synth = [[AVSpeechSynthesizer alloc]init];

    [synth speakUtterance:utterance]; 

    经过测试,无论是在前台或者后台被挂起的时候都能播放语音,但是有时候会被系统中断掉,xcode 的打印台会出现下面这些,但是重新进入app的时候,语音又会播放出来,至今还是个坑,不知道怎么搞。(后来提交到appstore的时候,需要演示后台语音播放功能,然后苹果审核说不可以这样用,就去掉了后台播放的功能)

    AVSpeechSynthesizer Audio interruption notification: {

    AVAudioSessionInterruptionTypeKey = 1;

    }

    AVSpeechSynthesizer Audio interruption notification: {

    AVAudioSessionInterruptionOptionKey = 0;

    AVAudioSessionInterruptionTypeKey = 0;

    }

    调节系统声音

    首先在工程引入MediaPlayer.framework在调节音量的地方加入头文件

    MPMusicPlayerController *mp=[MPMusicPlayerController applicationMusicPlayer];

    mp.volume=1;//0为最小1为最大

    相关文章

      网友评论

      • uuuuu喷:你好 楼主 想问下 为甚么我退到后台 语音就不播放了 但是在前台的时候是可以的
        阿斯顿卡卡:你没有设置好?你可以查下相关资料。QQ音乐等都可以后台播放,你的就可以。

      本文标题:iOS 后台播放语音

      本文链接:https://www.haomeiwen.com/subject/qrapattx.html