Agora知识点

一.rtm(real-time Messaging):实时消息。Agora RTM SDK是声网提供的用于实现消息通道、呼叫、聊天、状态同步等功能的SDK。

rtc(real-time Communication):实时通信。Agora RTC SDK是声网提供的用于实现音频视频实时通信的SDK。

二.AgoraRTC全局模块:通过调用API建立连接,控制音视频通话和直播服务。

AgoraRTC的方法有:

(1)核心方法:

createClient:创建本地客户端;

(2)本地音视频采集:创建音视频轨道对象的方法。

createMicrophoneAudioTrack:通过麦克风创建一个音频轨道对象;

createCameraVideoTrack:通过摄像头创建一个视频轨道对象;

createMicrophoneAndCameraTracks:同时创建麦克风音频轨道对象和摄像头视频对象;

createScreenVideoTrack:通过屏幕共享创建一个视频轨道对象;

createBufferSourceAudioTrack:通过音频文件创建一个音频轨道对象;

createCustomAudioTrack:创建一个自定义的音频轨道对象;

createCustomVideoTrack:创建一个自定义的视频轨道对象;

(3)媒体设备查询:查询相关设备的方法。

getDevices:获取媒体设备列表;

getCamera:获取摄像头列表;

getMicrophone:获取麦克风列表;

getPlaybackDevices:获取音频播放设备列表;

getElectronScreenSources:获取Electron屏幕共享源列表;

(4)日志管理:管理日志,如打开、关闭、设置日志。

enableLogUpload:打开日志上传功能;

disableLogUpload:关闭日志上传功能;

setLogLevel:设置日志等级;

(5)全局事件回调:音视频采集设备状态变化事件、音频轨道自动播放失败事件。

onCameraChanged:视频采集设备状态变化回调;

onMicrophoneChanged:音频采集设备状态变化回调;

onAudioAutoplayFailed:音频轨道自动播放失败回调;

(6)其他:

checkSystemRequirements:检测浏览器兼容性;

getSupportedCodec:获取支持的编码格式;

AgoraRTC中的类:

(1)AgoraRTCClient类:AgoraRTCClient是一个本地客户端对象,代表一个通话中的本地用户;提供音视频通话的核心功能,比如

join:加入频道;

leave:离开频道;

publish:发布本地音视频轨道;

unpublish:取消发布本地音视频轨道;

subscribe:订阅远端用户的音视频轨道;

unsubscribe:取消订阅远端用户的音视频轨道;

(2)LocalTrack类:LocalTrack是是Agora Web SDK中用于定义本地音视频轨道的抽象类,可用于本地播放和发布。

派生类对象有本地音频轨道和本地视频轨道:

本地音频轨道有:

LocalAudioTrack:最基础的本地音频轨道对象,包含了基础的本地音频控制,如播放、设置音量控制,通过AgoraRTC.createCustomAudioTrack创建;

MicrophoneAudioTrack:本地麦克风音频轨道对象,比LocalTrack多一些控制麦克风的方法,通过AgoraRTC.createMicrophoneAudioTrack创建;

BufferSourceAudioTrack:通过读取音频数据源创建的本地音频轨道,比LocalAudio多一些控制音频数据源的方法,通过AgoraRTC.createBufferSourceAudioTrack创建;

本地视频轨道有:

LocalVideoTrack:最基础的本地视频轨道对象,包含了基础的本地视频控制,如播放、美颜,通过AgoraRTC.createCustomVideoTrack或者AgoraRTC.createScreenVideoTrack创建;派生自LocalTrack;

CameraVideoTrack:本地摄像头视频轨道对象,比LocalVideoTrack多了一些控制摄像头和编码参数的方法,通过调用AgoraRTC.createCameraVideoTrack创建;派生自LocalVideoTrack;

(3)RemoteTrack类:RemoteTrack是Agora Web SDK中用于定义远端音视频轨道的抽象类。

需要先调用AgoraRTCClient.subscribe订阅远端用户,然后从远端用户对象AgoraRTCRemoteUser中获取派生自RemoteTrack的RemoteAudioTrack对象和RemoteVideoTrack对象。

三.AgoraRTM全局模块:Agora RTM Web SDK库在网页浏览器中通过API调用声网的实时消息服务。AgoraRTM是Agora RTM SDK的导出模块,产生名为AgoraRTM的全局变量。

Agora RTM Web SDK提供的核心功能有:

(1)登录登出相关。

(2)点对点信息。

(3)查询用户状态

(4)订阅或取消订阅单个或多个指定用户的在线状态。

(5)用户属性增删改查。

(6)频道属性增删改查。

(7)查询单个或多个频道的成员人数。

(8)上传和下载文件或图片。

(9)加入离开频道相关。

(10)频道消息。

(11)获取频道成员列表。

(12)呼叫邀请管理。

(13)更新Token。

(14)日志设置与版本查询。

(15)客户端实例配置。

事件有:

LocalInvitationEvents:LocalInvitation实例上的事件类型。

(1)LocalInvitationAccepted:返回给主叫:被叫已接受呼叫邀请。

(2)LocalInvitationCanceled:返回给主叫:被叫已取消呼叫邀请。

(3)LocalInvitationFailure:返回给主叫,呼叫邀请进程失败。

(4)LocalInvitationReceivedByPeer:返回给主叫,被叫已收到呼叫邀请。

(5)LocalInvitationRefused:返回给主叫,被叫已拒绝呼叫邀请。

RtmChannelEvents:RtmChannel实例上的事件类型。

(1)AttributesUpdated:频道属性更新回调。返回所在频道的所有属性。只有当频道属性更新者将 enableNotificationToChannelMembers设置为true后,该回调才会被触发。该标志只对当前频道属性操作有效。

(2)ChannelMessage:收到频道消息的事件通知。

(3)MemberCountUpdated:频道成员人数更新回调。返回最新频道成员人数。频道成员人数≤ 512时,触发频率为1次/秒;频道成员人数> 512时,触发频率为1次/3秒;用户在成功加入该频道时会收到该回调。可通过监听该回调获取加入频道时的频道成员人数和后继人数更新。

(4)MemberJoined:收到用户加入频道的通知。当频道成员>512时,该回调失效。

(5)MemberLeft:收到用户离开频道的通知。用户调用leave方法或者由于网络原因与Agora RTM系统断开连接超过30s都会触发该回调。当频道成员>512时,该回调失效。

RemoteInvitationEvents:RemoteInvitation实例上的事件类型。

(1)RemoteInvitationAccepted:返回给被叫:接受呼叫邀请成功。

(2)RemoteInvitationCanceled:返回给被叫:主叫已取消呼叫邀请。

(3)RemoteInvitationFailure:返回给被叫:呼叫邀请进程失败。

(4)RemoteInvitationRefused:返回给被叫:拒绝呼叫邀请成功。

RtmClientEvents:RtmClient实例上的事件类型。

(1)ConnectionStateChanged:通知SDK与Agora RTM系统的连接状态发生了变化。

(2)MessageFromPeer:收到来自对端的点对点消息。

(3)RemoteInvitationReceived:收到来自主叫的呼叫邀请。

(4)PeersOnlineStatusChanged:被订阅用户在线状态改变回调。首次订阅在线状态成功时,SDK会返回本回调,显示所有被订阅用户的在线状态;每当被订阅用户的状态发生改变,SDK都会通过该回调通知订阅方;如果SDK在断线重连过程中有被订阅用户的在线状态发生变化,SDK会在重连成功时通过该回调通知订阅方。

(5)TokenExpired:(SDK断线重连时触发)当前使用的RTM Token已超过24h的签发有效期。该回调仅会在SDK处于RECONNECTING状态时因RTM后台检测到Token签发有效期过期而触发,SKD处于CONNECTED状态时该回调不会被触发。收到该回调时需尽快在业务服务端生成新的Token并调用renewToken方法把新的Token传给Token验证服务器。

AgoraRTM中的类:

(1)RTMClient:RTM客户端类。通过AgoraRTM.createInstance方法创建RTM客户端实例。

方法:

(1)addOrUpdateChannelAttributes:添加或更新某指定频道的属性。无需加入指定频道即可为该频道更新频道属性。当某频道处于空频道状态数分钟后,该频道的频道属性将被情空。

(2)addOrUpdateLocalUserAttributes:添加或更新本地用户的属性。

(3)clearChannelAttributes:清空某指定频道的属性。

(4)clearLocalUserAttributes:清空本地用户的所有属性。

(5)createChannel:创建一个RTMChannel实例。

(6)createLocalInvitation:创建一个LocalInvitation实例。

(7)createMediaMessageByUploading:上传一个文件到Agora服务器以获取RtmFileMessage实例,可用于发送文件消息。

(8)createMessage:创建一个消息实例,可用于发送点对点消息或频道消息。

(9)deleteChannelAttributesByKeys:删除某指定频道的指定属性。无需加入指定频道即可删除该频道的属性。

(10)deleteLocalUserAttributesByKeys:删除本地用户的指定属性。

(11)downloadMedia:通过Media ID 从Agora服务器下载文件或图片。

(12)getChannelAttributes:查询某指定频道的全部属性。无需加入指定频道即可查询该频道的属性。

(13)getChannelAttributesByKeys:查询某指定频道指定属性名的属性。

(14)getChannelMemberCount:查询单个或多个频道的成员人数。

(15)getUserAttributes:获取指定用户的全部属性。

(16)getUserAttributesByKeys:获取指定用户指定属性名的属性。

(17)login:用户登录Agora RTM系统。

(18)logout:退出登录,退出后自动断开连接和销毁回调监听。

(19)on:在该频道实例上添加listener函数到名为eventName的事件。

(20)queryPeersBySubscriptionOption:查询某指定内容被订阅的用户列表。

(21)queryPeersOnlineStatus:查询指定用户的在线状态。

(22)renewToken:更新当前token。

(23)sendMessageToPeer:本地用户(发送者)向指定用户(接收者)发送点对点消息或点对点的离线消息。

(24)setChannelAttributes:全量设置某指定频道的属性。

(25)setLocalUserAttributes:全量设置本地用户的属性。

(26)setParameters:修改RTMClient实例配置,修改实时生效。该方法从v1.4.2起废弃,使用updateConfig。

(27)subscribePeersOnlineStatus:订阅指定单个或多个用户的在线状态。首次订阅成功后,SDK会通过RtmClientEvents.PeersOnlineStatusChanged回调返回被订阅用户在线状态。每当被订阅用户在线状态发生变化时,SDK都会通过RtmClientEvents.PeersOnlineStatusChanged回调通知订阅方。

如果SDK在断线重连过程中有被订阅用户的在线状态发生改变,SDK会在重连成功时通过RtmClientEvetns.PeersOnlineStatusChanged回调通知订阅方。

用户登出Agora RTM系统后,所有之前的订阅内容都会被清空。SDK会在网络连接中断时进入断线重连状态,重连成功时SDK会自动重新订阅之前订阅用户。

(28)unsubscribePeersOnlineStatus:退订指定单个或多个用户的在线状态。

(29)updateConfig:修改RtmClient实例配置,修改实时生效。

(2)RtmMessage类:用来表示RTM消息的类型别名。类型有RtmTextMessage(文本消息)、RtmRawMessage(自定义二进制消息)、RtmImageMessage(图片消息)、RtmFileMessage(文件消息)。

(3)RtmChannel类:RTM频道类,通过createChannel方法创建RTM频道实例。

方法:

(1)getMembers:获取频道用户列表。返回Primise,该Promise会在成功获取频道用户列表后resolve,Promise返回的值为该频道所有用户ID的数组。

(2)join:加入该频道。加入频道成功后可收到该频道消息和频道用户进退通知。最多可加入20个频道。返回的Promise会在加入频道成功后resolve。

(3)leave:离开该频道。离开频道后不再接收频道消息和频道用户进退通知。返回的Promise会在离开频道成功后resolve。

(4)sendMessage:发送频道消息。所有加入频道的用户都会收到该频道消息。发送消息的频率上限是180次/3s。

(4)LocalInvitation类:由主叫通过createLocalInvitation方法创建,仅供主叫调用的呼叫邀请对象。

方法:

(1)cancel:取消已发送的呼叫邀请。该方法无异步回调。

(2)send:向指定用户(被叫)发送呼叫邀请。该方法无异步回调。

(5)RemoteInvitationl类:由SDK创建仅供被叫调用的呼叫邀请对象。

方法:

(1)accept:接受来自主叫的呼叫邀请。该方法无异步回调。

(2):refuse:拒绝来自主叫的呼叫邀请。该方法无异步回调。

上一篇:Web项目引入Agora SDK实现视频通话功能


下一篇:【React Native】集成声网Agora语音通讯