最近一个收款项目,其中一个需求是收款推送实时播报收款金额。关于iOS推送的发展和机制不再多赘述。直接上方案和问题
方案一:直接自定义收款推送提示音,不区分iOS10和以下设备兼容,前台直接播放收款语音。远程推送直接播放固定提示音,比如:“***有一笔收款,请查收”,但是这种方案比较初级,一般情况下不符合产品需求和用户体验
方案二:VoIP Push Notification,iOS8之后的推送新特性:是在iOS8以上才支持的新Push类型,就是打视频或者语音电话的时候推送功能。可以实现实时语音推送需求,但是,但是,app需要有网络电话功能才可以,不然AppStore审核会直接被拒。有兴趣的可以参考下腾讯bugly的文章:微信iOS收款到账语音提醒开发总结
方案三:重点,也是我们最终采纳的方案,iOS10之后的推送扩展UNNotificationServiceExtension,同支付宝的处理方式一样:iOS10以上的设备收款,语音推送直接播报金额,如果是iOS10以下的设备,直接播放自定义固定提示音即可。使用UNNotificationServiceExtension,你有30秒的时间处理这个通知(包括语音播放和下载图片等),关于此扩展的作用和详细使用不再描述,有太多的资料。如果使用了此扩展创建了target,你会发现在iOS10以上没问题,但是在iOS10以下的设备是无法安装的。怎么解决呢?经过将近两天的研究和查阅资料,均是无果。最终实践发现,NotificationService的target需要设置成10.0+,然后使用iOS10以下的设备调试、打包安装,可以完美运行。