iOS APP 语音播报技术优化方案
1. 当前的问题和建议方案
目前开APP具备类似微信、支付宝的到账提示和语音播报功能。最初使用了第三方服务极光推送
,后来增加了iOS的新特性Notification Service Extension
,实现了iOS在APP后台、锁屏甚至APP被kill的情况下依然可以及时进行语音播报。
但是前段时间iOS 12.1 系统更新后,有商户不断反馈没有到账推送和语音播报,经过排查初步判断iOS 12.1+ 对Notification Service Extension
的进行了限制,APP不在前台活动时,收到推送消息后无法再获取媒体权限,导致无法完成语音播报,通知消息也无法正常显示。
目前的方案是对iOS系统进行了区分,12.1之前的版本可以正常语音播报,12.1+ 的系统下APP在前台时可以进行语音播报,其它情况下只有通知提示。
此期间,移动端也在寻找新的方案优化体验,经过我们评估,现在建议使用和升级的技术方案是 VoIP推送
,也是目前微信使用的到账语音播报方案。
VoIP和APNs 是Apple 提供的两套不同的推送系统。
APNs推送是没有应用场景限制的Apple通用推送通知服务,但是仅有提示音和通知栏展示,且有一定延时性和丢失率。VoIP推送是
专门供具备VoIP功能的APP
使用的推送系统,延时低,并且在收到推送时可以激活APP以实现及时、流畅的网络语音通话。但是APP必须有VoIP类的功能才能获得批准上架App Store
。
-
APNs推送的缺点
- 1、iOS 12.1 以后无法语音播报
- 2、Apple APNs本身就有有延时和丢失率,再加上和极光server的通信过程,丢失率比VoIP高很多
-
3、使用的
极光推送
对推送频率有限制,交易量过大会受到限制 - 4、开张吉祥和OEM的每个APP都需要维护极光推送的APP配置,工作繁琐 VoIP推送的优点
- 1、收到推送时可激活APP,获取媒体权限,在锁屏、APP挂起、APP被kill的情况下都可以进行语音播报
- 2、延时低,1秒左右送达,几无丢失
- 3、APP server直接和Apple 服务器通信,可控性强
- 4、积累成熟的技术方案
2. 改用VoIP方案需要的工作
-
iOS APP端
- 1、配置VoIP权限和环境,实现接收VoIP推送消息
-
2、开发语音呼叫的功能用于过审。目前的想法是开发一个
在线客服
的壳子,提供语音通话的UI。若无法过审再开发真正的语音通话功能。 -
3、兼容原来的
极光推送
和Notification Service Extension
APP服务器
- 1、对接Apple的 Push Notification Service 接口 官方文档
- 2、在相关API的版本、Device token的存储、调用推送接口上做兼容开发,旧版本iOS APP使用极光推送,新版本使用VoIP推送