微信小程序使用腾讯云云通信IM(登录)
首先看文档,跑通demo。https://cloud.tencent.com/document/product/269/32941
第一步:集成SDK并引用至项目 https://github.com/tencentyun/TIMSDK
集成SDK登录分为独立模式和托管模式。
如果业务的帐号体系是托管模式,还需要引入TLS Web SDK。
托管模式SDK函数调用顺序我项目中用到的独立模式,则不需要上面的操作。
独立模式函数调用顺序 (当然这些步骤托管模式下也是需要的)
独立模式函数调用顺序emmmm.....反正上边能看懂就看,我直接上代码啦。
第二步:登录
登录用到的方法是 webim.login(loginInfo, listeners,options,cbOk,cbErr) 第一个是用户信息对象,第二个是事件回调对象,第三个是其他对象,cnOk是成功回调,cnErr是错误回调。
// 用户信息对象
var loginInfo = {
'sdkAppID': 'xxxxxx', //用户所属应用id,必填( 创建腾讯云通讯应用获取到的 sdkappid)
'accountType': 'xxxxxx', //用户所属应用帐号类型,必填 (在帐号体系集成配置中获取到的 accountType)
'identifier': 'xxxxxx', //当前用户ID,必须是否字符串类型,必填(通过控制台开发辅助工具生成的identifier )
'userSig': 'xxxxxx',,//当前用户身份凭证,必须是字符串类型,必填( 通过控制台开发辅助工具生成的 userSig)
'identifierNick': null, //当前用户昵称,不用填写,登录接口会返回用户的昵称,如果没有设置,则返回用户的id
};
由于我项目中只用到群聊消息收发功能,所有其他监听事件自行百度。附上api文档 https://cloud.tencent.com/document/product/269/1595
//监听事件
var listeners = {
"onConnNotify": onConnNotify//监听连接状态回调变化事件,必填
,"onMsgNotify": onMsgNotify//监听新消息(私聊,普通群(非直播聊天室)消息,全员推送消息)事件,必填
};
//监听连接状态回调变化事件
var onConnNotify = function(resp) {
switch (resp.ErrorCode) {
case webim.CONNECTION_STATUS.ON:
console.log('建立连接成功: ' + resp.ErrorInfo);
break;
case webim.CONNECTION_STATUS.OFF:
wx.showModal({
title: '提示',
content: '连接已断开,无法收到新消息,请检查下你的网络是否正常',
})
break;
case webim.CONNECTION_STATUS.RECONNECT:
wx.showModal({
title: '提示',
content: '连接状态恢复正常',
})
break;
default:
wx.showModal({
title: '提示',
content: '未知连接状态,请重新登录',
})
break;
}
};
//监听新消息事件
//newMsgList 为新消息数组,结构为[Msg]
function onMsgNotify(newMsgList) {
var sess, newMsg;
var selToID = wx.getStorageSync('selToID');
//获取所有聊天会话
var sessMap = webim.MsgStore.sessMap();
for (var j in newMsgList) { //遍历新消息
var newMsg = newMsgList[j];
if (newMsg.getSession().id() == selToID) { //为当前聊天对象的消息
var selSess = newMsg.getSession();
console.log(newMsg);
that.addMsg(newMsg); //在聊天窗体中新增一条消息
}
}
}
var isAccessFormalEnv = true; //是否访问正式环境
var isLogOn = false; //是否开启sdk在控制台打印日志
var options = {
'isAccessFormalEnv': isAccessFormalEnv, //是否访问正式环境,默认访问正式,选填
'isLogOn': isLogOn //是否开启控制台打印日志,默认开启,选填
}
webim.login(loginInfo, listeners, options, function(resp) {
console.log("登录成功------------------")
}, function(err) {
console.log("登录失败------------------", err.ErrorInfo)
})
后续会慢慢更新群组获取,聊天室收发消息。
萌新小白,文章多有不到之处,qq:215227670,一起交流。