一、基础工作
申请网易云IM账号,申请小程序开发者账号,阅读官方API及开发文档。
二、后端工作
我们知道网易云的通讯接入如下图
![](https://img.haomeiwen.com/i13859779/4598438c56b2a53b.png)
后端首先自己去获取accid和token 获取accid和token地址
当我们有了accid 以及token 返回给前端。
这里建议用户登录得token和网易云得token是一致的,网易云允许我们自己设置token,没设置的话会自己随机产生并返回给我们。
三、前端工作
前端需要导入SDK https://yunxin.163.com/im-sdk-demo , copy到小程序的项目内。
小程序的IM接入与WEB端的接入相似,先获取IM的实例,获取到后才能发送消息。
chatInit:function(){
const user = request.getUser();
this.globalData.nim = chat.NIM.getInstance({
debug: false,
appKey: "网易云IM的APPKEY",
account: user.accId,//后端给的在网易云获取的accid
token: user.token, //后端给的在网易云获取的token
db: false, //若不要开启数据库请设置false。SDK默认为true。
onconnect: function () {
console.log('连接成功');
},
onwillreconnect: function (obj) {
// 此时说明 SDK 已经断开连接, 请开发者在界面上提示用户连接已断开, 而且正在重新建立连接
console.log('即将重连');
console.log(obj.retryCount);
console.log(obj.duration);
},
ondisconnect: function (error) {
// 此时说明 SDK 处于断开状态, 开发者此时应该根据错误码提示相应的错误信息, 并且跳转到登录页面
console.log('丢失连接');
console.log(error);
if (error) {
switch (error.code) {
// 账号或者密码错误, 请跳转到登录页面并提示错误
case 302:
break;
// 重复登录, 已经在其它端登录了, 请跳转到登录页面并提示错误
case 417:
break;
// 被踢, 请提示错误后跳转到登录页面
case 'kicked':
break;
default:
break;
}
}
},
onerror: function (error) {
console.log(error);
}
});
},
但是在这里,我建议大家先去做微信登录。我的代码贴上
// 微信登录认证
login:function(){
// 先判断是否登录,先检查session
wx.checkSession({
success() {
console.log("session未过期");
},
fail() {
// session_key 已经失效,需要重新执行登录流程
wx.login({
success(res) {
if (res.code) {
//发起网络请求
request.post("/appletsUser/login", res.code,(res) => {
let data = res.data;
wx.setStorageSync("user", data.data);
});
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
}
})
}
只要看到 连接成功 就代表可以发送消息接收消息等。
如果报错,看下导入得sdk是否正确,微信小程序有专门得SDK。
网友评论