关于iOS实现前台,后台,锁屏或关闭app语音播报

公司要求像支付宝收款一样,收到推送后实现语音播报功能,之前没有做过,特此机会研究一下。

用到的技术点:

1.如果对语音要求不是特别高的情况下,用苹果系统自带的AVSpeechUtterance可以实现,也可以用讯飞的sdk。

2.之前公司用的是友盟推送,可以实现基本的弹框形式推送,为了语音播报在锁屏情况正常,我增加了iOS10 推出的UNNotificationServiceExtension “推送扩展”

关于在前台实现语音播报,很简单,

xcode 后台设置

-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler(前台收到通知的代理方法)中写语音播报的方法

AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:alterText];

//            utterance.voice  = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-TW"];//设置语言

//            utterance.rate  = 0.4;  //设置语速

//            utterance.volume = 0.0;  //设置音量(0.0~1.0)默认为1.0

//            utterance.pitchMultiplier    = 1.0;  //设置语调 (0.5-2.0)

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

//            [synth speakUtterance:utterance];

在后台实现语音播报

谢谢www.jianshu.com/p/c06133d576e4作者的分享,利用作者提供的方法,我也实现了在后台播放,但是锁屏或关闭app是无法完成语音播报的。我根据作者提供的UNNotificationServiceExtension,搜索使用方法完成了锁屏情况的语音播报。

1.UNNotificationServiceExtension的创建参考www.cocoachina.com/ios/20161017/17769.html创建完成后- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler中语音播报的方法添加进去,这个方法主要是在没有推出弹框前,给30s的时间处理推送的内容,所以要推送的语音最好不要太长。

注意:如果项目需求是在前台和后台播放,就仅需要参考www.jianshu.com/p/c06133d576e4的方法,如果所有情况都需要,仅需要添加UNNotificationServiceExtension,填写语音播报的代码,⚠️,一定要推送的 "aps"字典中,一定要包含 mutable-content 键,并且 mutable-content 的值为 1。不然不走推送扩展的方法。

支付宝就是利用此方法完成iOS10以后的语音播报,iOS10以前只需要播报一端固定的语音,把固定音频文件放在目录下,后台的sound 参数写上音频文件的名字。

我已经完成了语音播报功能,遇到什么问题,可以直接私信,我会回答的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ytkah

微信电脑版也能用公众号自定义菜单 微信1.2 for Windows发布

  昨日,微信电脑版发布更新,版本为微信1.2 for Windows,最大的特色就是加入了保存聊天记录功能,可以使用公账号菜单,手机上收藏的表情也能在电脑版上...

3079
来自专栏ytkah

多客服功能终于也向所有微信认证的订阅号开放了

  多客服功能支持多人同时为一个公众号提供客服服务,经过半年多仅对认证服务号开放后,现在终于也向所有微信认证的订阅号开放了,所有微信认证的服务号和订阅号可以在“...

3336
来自专栏FreeBuf

加油站也会被黑?来看看这个攻击案例

这篇文章涉及的问题主要与加油管理设备公司Veeder Root相关的油品液位仪TLS-300/350 UST和TLS-350R相关,原因在于可以通过其错误配置的...

1986
来自专栏菜鸟程序员

Github上出现PS4 4.05固件的内核利用,越狱指日可待

1354
来自专栏知晓程序

小程序谁都能注册?Naive!| 小程序问答 #31

那么,哪些个人或者组织,才能注册小程序呢?每个人、每个组织,又可以注册多少个小程序呢?

1259
来自专栏SAP最佳业务实践

想学FM系列(14)-SAP FM模块:预算结构(5)-预算结构操作-预算地址维护

3.2.2 预算结构操作 3.2.2.1 预算地址维护 ? ? 1)FMBSBO - 单个处理 功能:手工维护预算地址 ? ① 预算类别:选择使用的预算类别,...

3818
来自专栏币聪财经

币聪早报:以太坊dApp浏览器采取措施提高钱包安全性

Paul Camechon在Medium中写道:“由于用户隐私问题,MetaMask和其他dApp浏览器已经承诺在11月2日停止向用户浏览器注入Web3,这意味...

683
来自专栏Seebug漏洞平台

摄像头漏洞挖掘入门教程(固件篇)

据 IT 研究与顾问咨询公司 Gartner 预测[1],2017 年全球物联网设备数量将达到 84 亿,比 2016 年的 64 亿增长31%,而全球人口数量...

1151
来自专栏FreeBuf

如何使用Airgeddon搭建基于软件的WIFI干扰器

Airgeddon是一款能够进行Wi-Fi干扰的多Bash网络审计工具,它可以允许你在未加入目标网络的情况下设置目标,并且断开目标网络中的所有设备。Airged...

26410
来自专栏源哥的专栏

基于linux的嵌入IPv4协议栈的内容过滤防火墙系统(2)-概要引言

概要:在Linux系统下,具有图形界面的防火墙系统很少,而包含内容过滤的防火墙系统更可以说是少之又少,本程序不仅具有防火墙功能,而且可以对rar、zip压缩格式...

463

扫码关注云+社区