近期,项目需要增加语音提醒功能,收到付款后APP自动语音提醒收到**元,期间遇到众多的坑,在此感谢那些帮我避开这些坑的大牛的帮助,以及个推的技术人员的耐心解答(虽然我集成的不是个推,但是期间我用的个推做的测试),在此我罗列一下我遇到的那些问题。
iOS 10以下语音提醒只能播放本地语音,实现不了播放具体的收款金额,支付宝也是这样实现的。iOS 10以上的实现方式是系统提供了一个推送扩展功能(个人理解相当于创建了一个依附APP,依赖于主APP的生命周期),收到推送消息后推送的内容会来到这个依附的APP的方法中,以此来实现播放的具体金额的功能。
好了,话不多说,开始吧...
创建好后xcode会自动为我们创建一个文件夹,这个时候我们的项目就会有
这个推送扩展了,
首先需要我们在新创建的文件夹中的info.plist配置一下允许HTTP
选择这个推送扩展,编译,有时xcode会自动为我们配置好证书,有时候不会,没有自动配置证书也没关系,对于这个推送扩展我们不需要重新申请证书,只需要用原来的证书就可以。
这里面有需要注意的几个点:1.需要选择对应的target,选择这个扩展的target
2.bundle idetifier 项目唯一标示是在原来APP的项目唯一标示上自动生成的,这点不用我们自己去改
3.如果xcode没有自动为我们自动选择证书的话,我们需要把原项目的描述文件在这个target中重新导入一遍,自动选择了更好,就不用操作这一步了。
4.扩展的target与主target的构建版本号与版本号要一致。
5.推送测试的话一定要选择推送扩展的target。
6.选择的推送扩展target支持的iOS版本选择10.0以上,主target还按原来的就可以。
推送扩展文件中.m的方法如图
不管用系统带的语音合成,还是用科大讯飞都可以,本人用的科大讯飞,
这时候又要注意一点,对这个扩展我们要重新导入相应的框架才能调用相应的方法(个人理解跟主APP无关 所以要重新导入),我
用的科大讯飞这是我重新导入的相应的框架。就这样我们就可以去相应的平台进行推送测试了。
注意:
1.选择推送扩展的target运行进行推送测试
2.后台推送的时候,sound字段不能用default,否则不调用推送扩展。
3.后台推送的时候,content-available字段设置为“1”。
4.在扩展.m方法中打断点,有时候不走断点,没关系,断开xcode连接试试走不走,推送扩展的推送包含title,可以设置一下title的名称来区别是否走了推送扩展的方法。
5.如果不走,先运行一下主target,推送条内容,在运行这个扩展的target,再推送内容。
6.如果还没走,删除APP重启一下手机试试。
7.如果还没走,给我留言我帮你看看
(写的不好,多多担待)