技术分享| 基于 RTM 实现的呼叫邀请如何添加推送功能?
RTM 实时消息服务,解决了在线实时信令的传递,如何配合推送服务,去做离线通知功能一直困扰着开发者,本文从 RTM 的功能以及响应机制入手,教大家如何通过 RTM 配合第三方推送服务来完成离线消息通知。
RTM 主要功能
点对点消息与频道消息: 向单个或多个用户发送和接收文字、自定义格式等消息或信令类型。
用户属性和频道属性: 对用户属性和频道属性进行增删改查操作,可以实现用户标注、群公告等功能。
频道人数和成员列表: 获取单个或多个频道的成员人数。获取频道内用户列表。
查阅或订阅用户在线状态: 获取或订阅指定用户的在线状态。
呼叫邀请: 发送和接收呼叫邀请。
推送服务集成
为了能够快速实现推送功能,我们用第三方极光推送来完成推送功能。
服务端
极光提供服务端 REST API ,为了自身账号的安全,需要服务端去封装该接口,并提供给客户端一个推送的接口服务来完成推送。
服务端提供注册设备的接口,方便其他设备来呼叫该设备的时候,可以找到对应的设备;服务端提供删除设备的接口,方便设备退出登录,删除对设备的绑定,防止呼叫已经不用的设备。
客户端
iOS 和 Android 的集成这里就不在叙述,详细去看极光官网文档。特别注意 Android 端,由于推送服务在不同型号设备上表现不一致,需要分别对不同手机厂商做适配。
RTM 实现
集成 RTM SDK,前往开发者中心,跟着开发步骤进行集成。
呼叫流程
发送呼叫邀请的步骤:
获取
ARtmCallKit
实例设置
ARtmCallDelegate
呼叫邀请代理主叫调用
initWithCalleeId
创建ARtmLocalInvitation
,获取ARtmLocalInvitation
对象,此时ARtmLocalInvitation
对象生命周期开始主叫调用
queryPeersOnlineStatus
方法来判断对方是否在线,不在线的用户调用自身的推送接口:把呼叫邀请消息推送给对方主叫调用
sendLocalInvitation
发送呼叫邀请。被叫收到remoteInvitationReceived
回调,获取ARtmRemoteInvitation
对象,此时ARtmRemoteInvitation
对象生命周期开始。主叫收到localInvitationReceivedByPeer
回调。
接收流程
离线接收
离线场景收到呼叫邀请的推送通知后,点击推送或者点击 APP 启动 APP 即可。然后走正常流程,初始化 RTM,并登录该设备账号,登录 RTM 成功后,会收到呼叫的邀请回调,跟下面的在线流程一致。
在线接收
被叫从 remoteInvitationReceived
回调获取 ARtmRemoteInvitation
对象并调用 acceptRemoteInvitation
接受呼叫邀请。被叫收到 remoteInvitationAccepted
回调,此时 ARtmRemoteInvitation
对象生命周期结束。主叫收到 localInvitationAccepted
回调,此时 ARtmLocalInvitation
对象生命周期结束。
注意事项
主叫在发起呼叫前:使用
queryPeersOnlineStatus
方法先检测对方是否在线,不在线的用户,需要调用下推送接口去送达,同时也要调用sendLocalInvitation
方法进行呼叫发起呼叫后,如果用户一直不接收,会在 30s 后收到
localInvitationFailure
的回调,呼叫周期结束。
示例 Demo
ARCallPlus: 是 anyRTC 推出一款音视频通话 UI 组件,通过集成该组件,您只需要编写几行代码就可以为您的 App 添加音视频通话功能,并且支持离线唤起能力。ARCallPlus 支持 Android、iOS、Web 等多个开发平台。 欢迎大家使用体验。
版权声明: 本文为 InfoQ 作者【anyRTC开发者】的原创文章。
原文链接:【http://xie.infoq.cn/article/e9718fe67f588131b9b34f738】。文章转载请联系作者。
评论