• 技术分享| 基于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 等多个开发平台。 欢迎大家使用体验。

    在这里插入图片描述

  • 相关阅读:
    (附源码)计算机毕业设计Java坝上长尾鸡养殖管理系统
    ExcelServer EXCEL服务器使用- 用户、角色权限配置
    【Linux】七、基础IO
    链表-真正的动态数据结构
    神经元细胞分布全身吗,人体神经细胞分布图
    docker registry web ui 及私有镜像仓库 安装配置记录
    IBM MQ 搭建测试环境并测试消息的发送和接收
    【数据分析】基于八叉树和损失编码的无损点云压缩附matlab代码
    Avue-data数据大屏显示饼图(附Demo)
    【活动通知】2023 Elastic Meetup 北京站将于12月2日下午1点30在北京召开
  • 原文地址:https://blog.csdn.net/anyRTC/article/details/126659684