写点什么

技术分享| 基于 RTM 实现的呼叫邀请如何添加推送功能?

作者:anyRTC开发者
  • 2022 年 9 月 02 日
    上海
  • 本文字数:1275 字

    阅读完需:约 4 分钟

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 等多个开发平台。 欢迎大家使用体验。



发布于: 刚刚阅读数: 6
用户头像

实时交互,万物互联! 2020.08.10 加入

实时交互,万物互联,全球实时互动云服务商领跑者!

评论

发布
暂无评论
技术分享| 基于RTM 实现的呼叫邀请如何添加推送功能?_音视频_anyRTC开发者_InfoQ写作社区