uniapp开发小程序使用腾讯云IM(初始化配置,登录,监听,加群)

以前没有使用过IM,由于需要所以刚接触了IM,开发过程也碰到了许多坑,不多说直接上代码

初始化配置main.js

import TIM from './utils/tim-wx.js';//这两个文件自行去腾讯云下载
import COS from "./utils/cos-wx-sdk-v5.js";
let options = {
  SDKAppID: 0 // 接入时需要将0替换为您的即时通信 IM 应用的 SDKAppID ,id要去腾讯云控制台获得
};
// 创建 SDK 实例,`TIM.create()`方法对于同一个 `SDKAppID` 只会返回同一份实例
let tim = TIM.create(options); // SDK 实例通常用 tim 表示
// 设置 SDK 日志输出级别,详细分级请参见 setLogLevel 接口的说明
// tim.setLogLevel(0); // 普通级别,日志量较多,接入时建议使用
tim.setLogLevel(1); // release 级别,SDK 输出关键信息,生产环境时建议使用
// 注册 COS SDK 插件
tim.registerPlugin({'cos-wx-sdk': COS});
Vue.prototype.tim = tim

登录IM及监听消息和获取消息列表

//监听IM消息
this.onMessageReceived = function message(event){
	// event.data - 存储 Message 对象的数组 - [Message]
	console.log(event.data)
};
this.tim.on(TIM.EVENT.MESSAGE_RECEIVED, this.onMessageReceived);
//登录IM
let promise = this.tim.login({
	userID: IM账号id,
	userSig: 秘钥
});
promise.then((imResponse)=>{
	//监听IM处于ready状态,IM没有处于ready状态时,发送消息,会发不出去报错
	this.onSdkReady =(event)=>{
		//监听消息列表
		this.onConversationListUpdated = (event)=>{
			console.log(event.data); // 包含 Conversation 实例的数组
		};
		this.tim.on(TIM.EVENT.CONVERSATION_LIST_UPDATED, this.onConversationListUpdated);
	};
	this.tim.on(TIM.EVENT.SDK_READY, this.onSdkReady);
}).catch(function(imError) {
	 console.warn('login error:', imError); // 登录失败的相关信息
});

注意:监听IM消息可以反复监听,本人用IM来做直播间的聊天室,开发时就出现过发一条消息,其他用户会接收多条的情况,不需要监听时注意要取消监听,而且IM里的所有监听,都不要使用匿名函数,否则取消监听时不会生效

监听IM消息,接收的是json格式,使用时需要转一下格式

加入IM聊天群

let goGroup = this.tim.joinGroup({
	groupID: 群组id,
	type: TIM.TYPES.GRP_AVCHATROOM//要加入群组的类型
	//TIM.TYPES.GRP_PUBLIC:公开群
	//TIM.TYPES.GRP_CHATROOM:聊天室
	//TIM.TYPES.GRP_AVCHATROOM:音视频聊天室
});
goGroup.then((imResponse)=> {
	switch (imResponse.data.status) {
		case TIM.TYPES.JOIN_STATUS_WAIT_APPROVAL: // 等待管理员同意
			console.log('管理员')
			break;
		case TIM.TYPES.JOIN_STATUS_SUCCESS: // 加群成功
			// console.log('加群成功'); // 加入的群组资料
			break;
		case TIM.TYPES.JOIN_STATUS_ALREADY_IN_GROUP: // 已经在群中
			console.log('已经在群中')
			break;
		default:
			console.log('啥也没干')
			break;
	}
}).catch((imError)=>{
	console.warn('加入群组失败', imError); // 申请加群失败的相关信息
});

注意:IM官方文档给的是,加入群组后,再加入其它群组,会把上一个群组给顶掉,由于我们公司app那边也加了IM,可能是安卓那边接收消息解析不到位,小程序不退群,直接加入下一个群组这种操作,多次操作后,会把安卓给干的崩溃掉,所以本人建议,加入下一个群组时,最好把上一个群退掉,然后再加入下一个群组

由于本人第一次接触IM,开发过程中碰到了许多坑,填坑也填了好久,文章中如果有不对的地方,欢迎各位大牛指点,谢谢!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值