uni-app引入腾讯IM---登录

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('登录失败')
    })
    }
})
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值