iOS后台语音播报
2017-11-27 13:41
666 查看
最近做项目有一个需求:
app在前台弹出一个自定义提示框,并且语音读出相关内容.
app在后台的时候弹出推送通知,并且语音读出相关内容.
这个需求用到的知识点:
1,文字转语音(iOS 7.0 之后自带)
2,静默推送(个推,jpush等,本人选用的是个推.个推带有透传功能,轻松实现需求1)
**3,让app在后台时也能播报推送内容(我之前在网上找了好多内容,都没有最后一步.最后在一篇后台播放音乐的文章中找到一个方法.参考链接 http://www.jianshu.com/p/ab300ea6e90c).
实现:
1,文字转语音
2,静默推送也是iOS自带的具体就是让后台加一个字段----->"content-available" : 1,推送的具体设置请自行参考自家文档,这里不详细说了.
3,这是最关键的一步,不做这一步的话app在后台的时候是不能进行语音播报(或者只能播报一次)的!!!!!!!
在appDelegate中加入如下代码(再次声明这一段代码参考:http://www.jianshu.com/p/ab300ea6e90c)
Paste_Image.png这样后台语音播报的功能就实现了,但是只有app没被系统杀死的情况下才能语音播报,如果app长时间在后台导致被系统杀死,播报功能就没有了,这个我还不知道怎么解决!欢迎各位大神留言指导!
作者:0胡杨0
链接:http://www.jianshu.com/p/846b4f8dd6cc
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
app在前台弹出一个自定义提示框,并且语音读出相关内容.
app在后台的时候弹出推送通知,并且语音读出相关内容.
这个需求用到的知识点:
1,文字转语音(iOS 7.0 之后自带)
2,静默推送(个推,jpush等,本人选用的是个推.个推带有透传功能,轻松实现需求1)
**3,让app在后台时也能播报推送内容(我之前在网上找了好多内容,都没有最后一步.最后在一篇后台播放音乐的文章中找到一个方法.参考链接 http://www.jianshu.com/p/ab300ea6e90c).
实现:
1,文字转语音
- (void)speakWithString:(NSString*)string { AVSpeechUtterance*utterance = [AVSpeechUtterancespeechUtteranceWithString:string]; utterance.pitchMultiplier=1.1; //中式发音 AVSpeechSynthesisVoice*voice = [AVSpeechSynthesisVoicevoiceWithLanguage:@"zh-TW"]; utterance.voice= voice; AVSpeechSynthesizer*synth = [[AVSpeechSynthesizeralloc]init]; [synthspeakUtterance:utterance]; }这是iOS 7 之后自带的框架,里面包括语速,语调等,需要的自己去百度.
2,静默推送也是iOS自带的具体就是让后台加一个字段----->"content-available" : 1,推送的具体设置请自行参考自家文档,这里不详细说了.
3,这是最关键的一步,不做这一步的话app在后台的时候是不能进行语音播报(或者只能播报一次)的!!!!!!!
在appDelegate中加入如下代码(再次声明这一段代码参考:http://www.jianshu.com/p/ab300ea6e90c)
-(void)applicationWillResignActive:(UIApplication*)application { //开启后台处理多媒体事件 [[UIApplicationsharedApplication]beginReceivingRemoteControlEvents]; AVAudioSession*session=[AVAudioSessionsharedInstance]; [sessionsetActive:YESerror:nil]; //后台播放 [sessionsetCategory:AVAudioSessionCategoryPlaybackerror:nil]; //这样做,可以在按home键进入后台后 ,播放一段时间,几分钟吧。但是不能持续播放网络歌曲,若需要持续播放网络歌曲,还需要申请后台任务id,具体做法是: _bgTaskId=[AppDelegatebackgroundPlayerID:_bgTaskId]; //其中的_bgTaskId是后台任务UIBackgroundTaskIdentifier _bgTaskId; } //实现一下backgroundPlayerID:这个方法: +(UIBackgroundTaskIdentifier)backgroundPlayerID:(UIBackgroundTaskIdentifier)backTaskId { //设置并激活音频会话类别 AVAudioSession*session=[AVAudioSessionsharedInstance]; [sessionsetCategory:AVAudioSessionCategoryPlaybackerror:nil]; [sessionsetActive:YESerror:nil]; //允许应用程序接收远程控制 [[UIApplicationsharedApplication]beginReceivingRemoteControlEvents]; //设置后台任务ID UIBackgroundTaskIdentifiernewTaskId=UIBackgroundTaskInvalid; newTaskId=[[UIApplicationsharedApplication]beginBackgroundTaskWithExpirationHandler:nil]; if(newTaskId!=UIBackgroundTaskInvalid&&backTaskId!=UIBackgroundTaskInvalid) { [[UIApplicationsharedApplication]endBackgroundTask:backTaskId]; } returnnewTaskId; }然后就是项目配置要选对,留图供大家参考
Paste_Image.png这样后台语音播报的功能就实现了,但是只有app没被系统杀死的情况下才能语音播报,如果app长时间在后台导致被系统杀死,播报功能就没有了,这个我还不知道怎么解决!欢迎各位大神留言指导!
作者:0胡杨0
链接:http://www.jianshu.com/p/846b4f8dd6cc
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章推荐
- iOS,APP退到后台,获取推送成功的内容并且语音播报内容。
- iOS 推送后台语音播报
- iOS 推送后台语音播报
- iOS如何实现语音播报及后台播放
- iOS如何实现语音播报及后台播放
- iOS语音播报及后台播放
- iOS后台唤醒实战:微信收款到账语音提醒技术总结
- ios 文本转语音 播报 AVSpeechSynthesizer
- 关于ios通话应用退到后台语音中断处理办法
- ios语音播报TTS
- iOS系统语音播报文字
- iOS 退款(或订单)推送消息语音播报
- ios项目开发—TTS技术的实现即语音播报(实现方法二)
- iOS自带文本转语音技术(TTS)的实现即语音播报的实践
- iOS推送消息push,语音播报
- Android语音播报、后台播报、语音识别
- iOS后台唤醒实战:微信收款到账语音提醒技术总结
- iOS后台唤醒实战:微信收款到账语音提醒技术总结
- Android语音播报、后台播报、语音识别
- iOS自带TTS技术的实现即语音播报