开发前提条件
- 有效的 开发者账号。
- 支持 RTM SDK 的主流浏览器:
下载 SDK
-
官网下载中心找到 「RTM SDK 下载」 的 Web 端
-
前往阿里云 OSS ,
ctrl + s
或command + s
下载 -
前往 github
clone
或Download ZIP
下载 -
通过
npm
市场下载
导入 SDK
-
script 标签引入
使用
<script>
标签引入的 SDK ,window 对象中会暴露一个ArRTM
的全局变量。<script src="/<YOUR_PATH>/to/ArRTM@latest.js"></script>
-
ES6 方式引入
import ArRTM from '/<YOUR_PATH>/to/ArRTM@latest.js';
-
CommonJS 方式引入
var ArRTM = require('/<YOUR_PATH>/to/ArRTM@latest.js');
-
npm 方式引入
import ArRTM from 'ar-rtm-sdk';
初始化rtm实例
client = await ArRTM.createInstance(APPID);
登录并监听连接状态
// 登录
await client.login({ uid });
// 监听连接状态
client.on('ConnectionStateChanged', (newState, reason) => {
if (reason == 'REMOTE_LOGIN') {
// reason == 'REMOTE_LOGIN' 说明此用户在别处登录
};
});
监听点对点消息
client.on('MessageFromPeer', (message, peerId) => {
// 对方发来的消息
const content = message.text;
// 订阅该用户
client.subscribePeersOnlineStatus([peerId]);
});
监听远端用户在线状态
// 订阅状态回调
client.on('PeersOnlineStatusChanged', (status) => {
var peerId = null;
var value = null;
// status 为一个对象 [key: string]: string
// key 是用户名,值是状态
// 'ONLINE' 为在线状态
for (var key in status) {
peerId = key;
value = status[key];
};
// 处理ui变化,不是必须
oldMsgList.forEach((item, index) => {
if(item.peerId == peerId){
item.login_status = value == 'ONLINE'? true : false;
};
});
});
发送消息
// 要发送的消息
const message = '你好,我是xxx';
// 这条消息发送给谁
const userid = '123456';
// 配置选项
const options = {
enableHistoricalMessaging: true, // 是否启用历史消息
enableOfflineMessaging: true // 是否启用离线消息
}
// 开始发送消息
client.sendMessageToPeer({text: message}, userid, options).then(() => {
// 处理代码逻辑
});
属性设置
// 属性名
const key = 'name';
// 属性值
const value = '小花猫';
// 添加属性
client.addOrUpdateLocalUserAttributes({[key]: value});
// 修改属性
var findUser = userSettingList.find(item => item.key == key);
if(findUser){
alert('不允许修改键');
return;
};
await client.addOrUpdateLocalUserAttributes({[key]: value});
// 删除属性
await client.deleteLocalUserAttributesByKeys(key);
获取用户属性
// 获取谁的属性
const userid = '123456';
// 获取该用户下所有属性
var AttributesMap = await client.getUserAttributes(userid);
// 遍历属性
var AttributesList = [];
for(var key in AttributesMap){
AttributesList.push({
key: key,
value: AttributesMap[key],
});
};
登录频道
// 频道号
const Channelid = '888888';
// 创建频道
const channel = await client.createChannel(Channelid);
// 加入频道
await channel.join();
// 监听频道消息
channel.on('ChannelMessage', ({ text }, peerId) => {
// 消息处理代码逻辑
});
发送频道消息
// 要发送的消息
const message = '你好,我是xxx';
// 开始发送频道消息
channel.sendMessage({text: message}).then(() => {
// 处理代码逻辑
});
频道属性设置
// 属性名
const key = 'name';
// 属性值
const value = '小花猫';
// 添加 / 修改频道属性
client.addOrUpdateChannelAttributes(Channelid, {[key]: value}).then(() => {
// 处理逻辑
});
退出登录
client.logout();
Demo 体验
一次体验,胜过无数启迪,轻松成就完美体验 立即体验
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!