iOS后台语音播报
来源:互联网 发布:淘宝秒杀需要登录吗 编辑:程序博客网 时间:2024/06/11 14:39
最近做项目有一个需求: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];//设置后台任务IDUIBackgroundTaskIdentifiernewTaskId=UIBackgroundTaskInvalid;newTaskId=[[UIApplicationsharedApplication]beginBackgroundTaskWithExpirationHandler:nil];if(newTaskId!=UIBackgroundTaskInvalid&&backTaskId!=UIBackgroundTaskInvalid){[[UIApplicationsharedApplication]endBackgroundTask:backTaskId];}returnnewTaskId;}
然后就是项目配置要选对,留图供大家参考
这样后台语音播报的功能就实现了,但是只有app没被系统杀死的情况下才能语音播报,如果app长时间在后台导致被系统杀死,播报功能就没有了,这个我还不知道怎么解决!欢迎各位大神留言指导!
作者:0胡杨0
链接:http://www.jianshu.com/p/846b4f8dd6cc
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
阅读全文
0 0
- iOS后台语音播报
- iOS 推送后台语音播报
- iOS 推送后台语音播报
- iOS语音播报及后台播放
- 后台语音播报
- Android语音播报、后台播报、语音识别
- iOS如何实现语音播报及后台播放
- ios 推送语音播报
- iOS系统语音播报文字
- ios 文本转语音 播报 AVSpeechSynthesizer
- iOS 语音合成,语音播报功能(系统)
- iOS开发技巧(语音播报文字内容)
- iOS 退款(或订单)推送消息语音播报
- 自动播报数字语音
- tts语音播报
- 语音播报实时天气
- WinForm 语音播报数据
- Android 语音播报实现
- Cocos-Android Studio、Gradle常见错误、设置
- 技术支持网址
- 手机界再掀风波,英特尔力争在下一部手机中抢得一席之地
- .class文件未编译的终极解决大招
- selenium使用代理
- iOS后台语音播报
- java --assert关键字断言
- JS——点击放大图片或鼠标滚动方法图片(大小图对应选择)
- Java 跨域 Json字符转类对象
- react系列(7)ajax网络请求
- 写给大数据开发初学者的话
- 使用Eclipse中的egit将代码提交到码云
- VMWARE DHCP SERVICE服务启动时报错:错误1068 依存服务或组无法启动
- MySQL数据库优化的八种方式(经典必看)