夜雨聆风学习资料网

ARTICLE · 1244072

借鉴微信语音通话,给我的AI助手APP增加了更强的消息提醒功能

借鉴微信语音通话,给我的AI助手APP增加了更强的消息提醒功能
我给自己做的AI助手APP,此前已经实现了APP Push,但是感觉不够明显。
今天想了一个方案,为什么不借鉴微信语音通话的提醒呢,那样很醒目。说干就干,晚上用了大概一个小时搞定了。(名字是我儿子起的,因为他觉得我发的语音提醒是关于摄像头的,类似于一个👮🏻)
能打电话,才更像真人的感觉吗?(至于双向对话,以后再说吧,目前不着急)
实现方法

锁屏和专注模式里,也能接一通来电

家里的摄像头发现情况时,手机会像接到电话一样亮起来:锁屏上是系统来电,App 里能看到小警的卡通头像。点接听之后,反复播放一句固定的话:「摄像头发送消息啦,请注意查看。」

这不是一条普通通知,因为普通通知在专注模式里会被收起来,提醒不够明显。

普通推送点不亮来电

App 平时的消息走 Apple 的普通推送。手机收到后,顶上弹出一条横幅。专注模式开着的时候,这种横幅会被系统收掉,所以看起来一闪就没了。

换成系统来电

能穿过专注模式的,是一通真正的来电。手机启动时,除了登记原来的消息推送令牌,再向系统要一枚来电专用令牌,分开存到服务器。两枚令牌不能混用。

有情况时,服务器用来电令牌发一条 VoIP 推送。请求头里写明这是来电,topic 用 App 的 Bundle ID 后面加上 `.voip`,优先级用最高的 10。认证还是原来那把 APNs 密钥,不用另外申请一套。

推送正文只带这几项:

- 类型:语音来电

- 动作:邀请

- 这一通的唯一编号

- 来电名字:小警

手机一收到,必须立刻向系统报告「有来电」,系统才会点亮锁屏,画出那张来电卡片。这一步如果漏了,或者收到了却不报告,系统会关掉 App,之后也不再把来电推送给它。

专注模式默认仍会放行来电。所以小警打过来时,锁屏上留下的是电话,不是一条会被收掉的横幅。

App 里看到的那一页

系统来电卡片只显示名字。卡通头像画在 App 自己的通话页上。

App 被唤醒、或者本来就开着时,会再盖上一整页:深色背景,小警的头像和名字,下面是拒绝和接听。这页只负责展示和把操作发回去,不负责在黑屏上把自己画出来。

接听、拒绝、挂断,都走原来的聊天 WebSocket,一条 JSON 就够了。服务器确认接通后,通话页开始计时。

为什么没实现双向通话?

这通来电只做一件事:把提醒做得比一条横幅更明显。接听之后听到的是服务器上录好的一句话,手机不需要把这边的声音送回去。

需要说话、问情况、来回聊,打开 App 里原有的对话窗口就行。

相关学习资料