1)在官网找到需要的SDK下载,并放到自己的项目中(我的在static/js中)
2)引入文件后就可以使用,首先是登陆,登陆分为托管和独立模式,托管还需要引用额外的文件
3)在需要使用的页面引入webim import webim from 'static/js/webim.js'
登陆用到的webim.login(loginInfo,listener,options,cbOk,cbErr)
//用户信息对象(一般调用后台接口获取)
uni.request({
url:'url地址+接口',
data:{要传递的参数},
success:(res)=>{
//用户信息
var loginInfo={
'sdkAppID':res.data.data.IMSDKID,//用户标识接入SDK的应用ID(必填)
'appIDAt3rd':res.data.data.IMSDKID,//用户使用OAuth授权体系分配的appid(必填)
'identifier':res.data.data.imUser,//用户账号(必填)
'identifierNick':res.data.data.nickName,//用户昵称(选填),
'accountType':12345,//账号类型(必填),
'userSig':xxxxxx//鉴权token,identifier不为空时,必填
};
//监听事件链接
var onConnNotify=function(resp){
var info;
switch(resp.ErrorCode){
case webim.CONNECTION_STATUS.ON:
webim.Log.warn('建立链接成功'+resp.ErrorInfo);
break;
case webim.CONNECTION.STATUS.OFF:
info="链接已断开,无法收到新消息,请检查网路是否正常"+resp.ErrorInfo;
uni.showToast({
title:info,
icon:'none'
});
break;
case webim.CONNECTION_STATUS_RECONNECT:
info='连接状态恢复正常'+resp.ErrorInfo;
uni.showToast({
title:info,
icon:'none'
});
break;
default:
webim.Log.error('未知链接状态='+resp.ErrorInfo);//错误信息
break;
}
};
//监听新消息事件(newMsgList为webim.Msg数组,即[webim.Msg])
var onMsgNotify=function(newMsgList)=>{
//console.log(newMsgList);
var sess,newMsg;
//获取所有聊天回话
var sessMap=webim.MsgStore.sessMap();
//遍历新消息
for(var j in newMsgList){
newMsg=newMsgList[j];
if(newMsg.getSession(),id()==selToID){
//为当前聊天对象的消息
sesSess=newMsg.getSession();
//在聊天窗体中新增一条消息
//console.log(newMsg);
addMsg(newMsg);
}
}
//消息已经上报,以及设置回话自动已读
webim.setAutoRead(selSess,true,true);
for(var i in sessMap){
sess=sessMap[i];
if(selToID!=sess.id()){//更新其他聊天对象的未读消息数
updateSessDiv(sess.type(),sess.id(),sess.unread())
}
}
};
//事件回调,监听事件
var listeners={
"onConnNotify":onConnNotify,//监听连接状态(必填)
"jsonpCallback":jsonpCallback,//IE9(含)以下浏览器用的jsonp回调函数
"onMsgNotify":onMsgNotify,//监听新消息(必填),
"onBigGroupMsgNotify": onBigGroupMsgNotify//监听新消息(直播聊天室)事件,直播场景下必填,如果不是可填{}
"onGroupSystemNotifys": onGroupSystemNotifys//监听(多终端同步)群系统消息事件,如果不需要监听,可不填
"onGroupInfoChangeNotify": onGroupInfoChangeNotify//监听群资料变化事件,选填
"onFriendSystemNotifys": onFriendSystemNotifys//监听好友系统通知事件,选填
"onProfileSystemNotifys": onProfileSystemNotifys//监听资料系统(自己或好友)通知事件,选填
"onKickedEventCall" : ()=>{}//被其他登录实例踢下线
"onC2cEventNotifys": ()=>{}//监听 C2C 系统消息通道
}
//调用login接口
webim.login(loginInfo,listeners,options,(resp)=>{
//成功
loginInfo.identifierNick=resp.identifierNick;
//设置登录信息.(首先在store中设置loginInfo)
this.$store.commit('setLoginInfo',loginInfo)
},(error)=>{
console.log('登录失败')
})
}
})