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

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

时间:2022-09-02 12:15:15浏览次数:89  
标签:在线 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 等多个开发平台。 欢迎大家使用体验。

在这里插入图片描述

标签:在线,RTM,邀请,主叫,推送,呼叫
From: https://www.cnblogs.com/anyrtc/p/16649368.html

相关文章

  • 学习如何将代码从 VSCode 推送到 GitHub
    学习如何将代码从VSCode推送到GitHub您是一名开发人员,大部分时间都在通过在不同窗口之间切换来编辑代码、查看更改以及将代码从VSCode推送到GitHub来消耗大部分时......
  • Git推送,项目保留原项目到分支,新项目覆盖主分支master
    前提:(1)你使用githubgitee创建一个名为demo的仓库(默认主分支master)(2)已经推送了一个项目(这里称为项目1),,现在需要推送新的项目(这里称为项目2)存到demo......
  • 安卓集成新版推送SDK与旧版本账号SDK发生依赖冲突,如何解决?
    ​ 1、问题描述一开始项目中是集成了华为登录SDK,如下图所示:​现在想要接入华为推送SDK,如下图所示:​结果集成之后出现了依赖冲突的问题,报错如下图中所示:​ 2、问......
  • 【Push Kit】推送返回80100016错误
    问题描述:在发送消息时报Anti-Spam:wordisforbiddenin[CONTENT],resp={"code":"80100016","msg":"Anti-Spam:wordisforbiddenin[CONTENT] 解决方案:80100016......
  • 【HMS core】【FAQ】音频编辑服务、推送服务、AR Engine典型问题合集
    ​1、【HMScore】【音频编辑服务】【问题描述】检查网络没问题,但音频编辑sdk空间渲染功能报错,错误码1007 【原因分析】根据日志打印信息来看,是在点击“空间渲染”功......
  • 使用ESP8266nodeMCU 向微信推送模板数据
    使用HTTPS协议向微信公众号推送消息,(使用ESP8266的低成本实现)前几天被朋友问到这个东西的实现方式,花了一下午时间研究一下,特此记录。没有排版比较乱。      ......
  • 实现web实时消息推送的7种方案
    实现web实时消息推送的7种方案敲代码的程序汪 ​关注 209人赞同了该文章我有一个朋友~做了一个小破站,现在要实现一个站内信web消息推送的功能,对......
  • Sentinel控制台1.8.3修改源码,修改配置后推送到Nacos
    目录1.接着上一篇2.思路3.下载Sentinel源码4.看Gateway里面读取的配置信息5.修改Sentinel控制台源码6.熔断规则测试7.限流规则测试8.打包使用1.接着上一篇简单......
  • 微信测试号推送
    进入测试号页面扫码登录点我进入然后我们先把下图两个东西保存去github【国际最大的开源仓库】不会用没事注册账号就行了QQ邮箱注册即可然后登录登录好后如下图......
  • python实现推送消息到微信公众号
    使用到库:Requests实现方式:微信已开放了对应的接口,直接通过python的requests库,发起请求,实现推送消息到公众号微信公众号准备:1、没有注册微信公众号,可以使用微信提供的......