iOS 推送语音播报(类似支付宝微信的收款提醒)

项目需求:

近期项目有个需求,实现类似支付宝微信收款后的语音播报如:支付宝到账xx元。要求是APP在前台运行、锁屏、杀死进程后都会有语音播报。

预想方案:

1.通过UIBackgroundTaskIdentifier不断向程序索要处理时间(这种方案不知道以前可行,现在好像是最多只能保持3分钟的时间,一般30s左右)-fail

2.后台播放无声音,保持APP一直运行,但是上架APPStore一般不是音乐类的都无法过审--fail

因此,我们现在选择了远程推送实现需求:(附DEMO

3.通过远程推送,在iOS10的时候,发布了UNNotificationServiceExtension扩展,关于此扩展,可以网上选择一些资料iOS10 推送extension之 Service Extension,主要的核心思想就是,在远程推送到底设备之前,给你一个修改的机会,我们知道,推送体是有限制的,而且推送体大小也会影响推送的效率,借助这个,我们可以修改标题、内容,也可以从网络上请求到内容,再去合成一个新的推送。

接下来就是实现手机接收到通知之后播报语音了,关于这个功能的实现在iOS10以后苹果新增了“推送拓展”UNNotificationServiceExtension,我们可以在这里操作,在这里我用的是苹果官方的AVSpeechSynthesizerAVSpeechUtterance来将接收到的推送内容转换成语音播报

貌似没啥问题,但是iOS12.1以后,不在允许在UNNotificationServiceExtension中播放语音了,只有系统提示音,阿欧。。。心好累。。。,没办法只好先在想办法,上网查找资料发现前辈们果然有解决办法,哈哈。。。

1.配置远程推送

2.在收到远程推送时,调用本地推送

3.把播报金额拆分成,一、二、三,四、五...千、百、万、点、元等一个个音频文件,根据推送过来的金额进行进行筛选然后按照顺序放入数组,具体的在下面有介绍(caculateNumber方法处理)

4.循环(递归)发送本地推送播放项目中的音乐文件

重点:

功能实现

1.配置 UNNotificationServiceExtension

具体的配置可参考文档:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值