1.下载sdk和插件
// 从v2.11.2起,SDK 支持了 WebSocket,推荐接入;v2.10.2及以下版本,使用 HTTP
npm install tim-wx-sdk --save
// 发送图片、文件等消息需要腾讯云 即时通信 IM 上传插件
npm install tim-upload-plugin --save
// 拦截或替换敏感词需要本地审核插件
npm install tim-profanity-filter-plugin --save
2.在main.js中写入下列代码
import TIM from "tim-wx-sdk";
import TIMUploadPlugin from "tim-upload-plugin";
import TIMProfanityFilterPlugin from "tim-profanity-filter-plugin";
let options = {
SDKAppID: '', // 接入时需要将0替换为您的即时通信 IM 应用的 SDKAppID
};
// 创建 SDK 实例,`TIM.create()`方法对于同一个 `SDKAppID` 只会返回同一份实例
let tim = TIM.create(options); // SDK 实例通常用 tim 表示
// 设置 SDK 日志输出级别,详细分级请参见 setLogLevel https://web.sdk.qcloud.com/im/doc/zh-cn/SDK.html#setLogLevel 接口的说明</a>
tim.setLogLevel(2); // 普通级别,日志量较多,接入时建议使用
// tim.setLogLevel(1); // release 级别,SDK 输出关键信息,生产环境时建议使用
// 注册腾讯云即时通信 IM 上传插件
tim.registerPlugin({ "tim-upload-plugin": TIMUploadPlugin });
// 注册腾讯云即时通信 IM 本地审核插件
tim.registerPlugin({ "tim-profanity-filter-plugin": TIMProfanityFilterPlugin });
// #ifdef APP-PLUS
// v2.22.0 起支持 uni-app 打包 native app 时使用离线推送插件
// 请注意!应合规要求,在用户同意隐私协议的前提下,登录成功后 SDK 会通过推送插件获取推送 token,并将推送 token 传递至后台(若获取 token 失败则会导致离线推送无法正常使用)
const TUIOfflinePush = uni.requireNativePlugin("TencentCloud-TUIOfflinePush");
tim.registerPlugin({
"tim-offline-push-plugin": TUIOfflinePush,
offlinePushConfig: {
// huawei
huaweiBusinessID: "", // 在腾讯云控制台上传第三方推送证书后分配的证书 ID
// xiaomi
xiaomiBusinessID: "", // 在腾讯云控制台上传第三方推送证书后分配的证书 ID
xiaomiAppID: "", // 小米开放平台分配的应用 APPID
xiaomiAppKey: "", // 小米开放平台分配的应用 APPKEY
// meizu
meizuBusinessID: "", // 在腾讯云控制台上传第三方推送证书后分配的证书 ID
meizuAppID: "", // 魅族开放平台分配的应用 APPID
meizuAppKey: "", // 魅族开放平台分配的应用 APPKEY
// vivo
vivoBusinessID: "", // 在腾讯云控制台上传第三方推送证书后分配的证书 ID
// oppo
oppoBusinessID: "", // 在腾讯云控制台上传第三方推送证书后分配的证书 ID
oppoAppKey: "", // oppo 开放平台分配的应用 APPID
oppoAppSecret: "", // oppo 开放平台分配的应用 Secret
// ios
iosBusinessID: "", // 在腾讯云控制台上传第三方推送证书后分配的证书 ID
},
});
// #endif
//挂载到全局
Vue.prototype.TIM = TIM;
Vue.prototype.tim = tim;
3.在项目中引入debug文件夹
4.在App.vue文件中登录账号
import { genTestUserSig } from "@/debug/GenerateTestUserSig.js";
onLaunch: function () {
let userID = "要登录账号的UserID"; // 在腾讯云开发者平台的账号管理页面中创建用户获取用户名(UserID)
let userSig = genTestUserSig(userID).userSig;
let promise = this.tim.login({ userID, userSig });
promise
.then(function (imResponse) {
console.log("登录成功");
// console.log(imResponse.data); // 登录成功
if (imResponse.data.repeatLogin === true) {
// 标识帐号已登录,本次登录操作为重复登录。v2.5.1 起支持
console.log(imResponse.data.errorInfo);
}
})
.catch(function (imError) {
console.warn("login error:", imError); // 登录失败的相关信息
});
},
下面是腾讯im的操作
获取聊天列表:
let onConversationListUpdated = (event) => {
console.log(event);
};
this.tim.on(this.TIM.EVENT.CONVERSATION_LIST_UPDATED, onConversationListUpdated);
接收发来的消息:
let onMessageReceived = (event) => {
console.log(event);
};
this.tim.on(this.TIM.EVENT.MESSAGE_RECEIVED, onMessageReceived);
拉取历史消息:
let promise = this.tim.getMessageList({
conversationID: "C2C" + '对方用户的UserID',
});
promise.then((imResponse) => {
const messageList = imResponse.data.messageList; // 消息列表。
const nextReqMessageID = imResponse.data.nextReqMessageID; // 用于续拉,分页续拉时需传入该字段。
const isCompleted = imResponse.data.isCompleted; // 表示是否已经拉完所有消息。
});
发送文字信息:
let message = this.tim.createTextMessage({
to: '对方用户的UserID',
conversationType: "C2C",
payload: {
text: '要发送的文字消息',
},
});
let promise = this.tim.sendMessage(message);
promise
.then((res) => {
// 发送成功
console.log(res);
})
.catch((err) => {
// 发送失败
console.log(err);
});
发送图片消息:
let message = this.tim.createImageMessage({
to: '对方用户的UserID',
conversationType: this.TIM.TYPES.CONV_C2C,
payload: { file: 'uni.chooseImage API返回的成功参数' },
onProgress: function (event) {
// console.log('file uploading:', event)
},
});
// 3. 发送图片
let promise = this.tim.sendMessage(message);
promise
.then((res) => {
// 发送成功
console.log(res);
})
.catch((err) => {
// 发送失败
console.log(err);
});
发送语音消息:
let res = {
duration: '语音文件的时长',
fileSize: '语音文件的大小',
tempFilePath: '语音文件',
};
const message = this.tim.createAudioMessage({
to: '对方用户的UserID',
conversationType: this.TIM.TYPES.CONV_C2C,
payload: {
file: res,
},
});
// 发送消息
let promise = this.tim.sendMessage(message);
promise
.then(function (res) {
// 发送成功
console.log(res);
})
.catch(function (err) {
// 发送失败
console.warn(err);
});