怎么用小程序集成环信IM
发表于:2024-12-03 作者:千家信息网编辑
千家信息网最后更新 2024年12月03日,怎么用小程序集成环信IM,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。小程序集成环信IM最近在做一款有语音直播功能的小程序,用到了环
千家信息网最后更新 2024年12月03日怎么用小程序集成环信IM
怎么用小程序集成环信IM,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
最近在做一款有语音直播功能的小程序,用到了环信IM集成功能,由于我搜了下目前用环信做小程序的的确是少之又少,而且环信官方说从2月份不再更新代码(具体原因我也没问,可能本身微信就是一款聊天工具所以用处不大)
我们产品需要用到聊天室功能,之前做H5端登录完成之后加入聊天室即可:
WebIM.conn.open(options); WebIM.conn.joinChatRoom(option1);
同样方法在小程序上不行,一直报错:
Cannot read property 'sendIQ' of undefined
百度了一下,说加入聊天室要放在登录成功后的回调里,于是查看它的源码connection.js发现:
connection.prototype.open = function (options) { var pass = _validCheck(options, this); if (!pass) { return; } var conn = this; if (conn.isOpening() || conn.isOpened()) { return; } if (options.accessToken) { options.access_token = options.accessToken; _login(options, conn); } else { //登录成功的回调函数 var suc = function (data, xhr, myName) { conn.context.status = _code.STATUS_DOLOGIN_IM; conn.context.restTokenData = data; if (data.statusCode != '404' && data.statusCode != '400') { wx.showToast({ title: '登录成功', icon: 'none', duration: 4000 }); } //回调成功后执行这个方法 _login(data.data, conn); }; var options = { url: apiUrl + '/' + orgName + '/' + appName + '/token', data: loginfo, success: suc || _utils.emptyfn, error: error || _utils.emptyfn }; _utils.ajax(options); }
登录成功有一个内部回调,回调里面调用了一个 _login(data.data, conn)的方法:
//具体里面执行什么去源代码查看,我就不贴代码了var _login = function (options, conn) { var callback = function (status, msg) { _loginCallback(status, msg, conn); };};
执行完login方法有一个_loginCallback回调:
var _loginCallback = function (status, msg, conn) { var conflict, error; //console.log('_loginCallback 1', Strophe.Status, status, msg) if (msg === 'conflict') { conflict = true; } console.log(status) if (status == Strophe.Status.CONNFAIL) { } else if (status == Strophe.Status.ATTACHED || status == Strophe.Status.CONNECTED) { //登录成功 } else if (status == Strophe.Status.DISCONNECTING) { } else if (status == Strophe.Status.DISCONNECTED) { } else if (status == Strophe.Status.AUTHFAIL) { } else if (status == Strophe.Status.ERROR) { } conn.context.status_now = status;};
通过断点发现当执行到 else if (status == Strophe.Status.ATTACHED || status == Strophe.Status.CONNECTED)时,登录成功.所以需要把加入聊天室的回调需要放在这个判断里面,我的具体做法如下:
//项目中封装一个加入聊天室函数 joinRoom: function () { var option1 = {}; var option2 = {}; //加入聊天室 WebIM.conn.joinChatRoom(option1); WebIM.conn.joinChatRoom(option2); }; //在环信登录函数中添加一个自己的回调: var options = { apiUrl: WebIM.config.apiURL, user: userId + '', pwd: userId + '', grant_type: "password", appKey: WebIM.config.appkey, //自己添加的回调函数 callBack:function(){ //调用加入聊天室 that.joinRoom(); } }; WebIM.conn.open(options);
修改环信connection.js代码:
//登录代码connection.prototype.open = function (options) { var suc = function (data, xhr, myName) { //callBack传入加入聊天室回调 _login(data.data, conn, options.callBack); }; var options = { url: apiUrl + '/' + orgName + '/' + appName + '/token', data: loginfo, success: suc || _utils.emptyfn, //添加加入聊天室的回调函数 callBack: options.callBack, error: error || _utils.emptyfn }; }};//_login代码var _login = function (options, conn, callBack) { var callback = function (status, msg) { //把加入聊天室函数传给_login回调函数 _loginCallback(status, msg, conn, callBack); };};//_loginCallback代码var _loginCallback = function (status, msg, conn,callBack) { var conflict, error; //console.log('_loginCallback 1', Strophe.Status, status, msg) if (msg === 'conflict') { conflict = true; } console.log(status) if (status == Strophe.Status.CONNFAIL) { } else if (status == Strophe.Status.ATTACHED || status == Strophe.Status.CONNECTED) { //登录成功执行加入聊天室 callBack(); } else if (status == Strophe.Status.DISCONNECTING) { } else if (status == Strophe.Status.DISCONNECTED) { } else if (status == Strophe.Status.AUTHFAIL) { } else if (status == Strophe.Status.ERROR) { } conn.context.status_now = status;};
具体思路就是这样,由于环信小程序代码有很多坑,所以遇到问题多看看源码,有些功能就需要自己去修改代码。
关于怎么用小程序集成环信IM问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
聊天室
登录
成功
代码
程序
函数
方法
功能
问题
就是
更多
源码
帮助
解答
不行
易行
简单易行
不大
产品
做法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
苏州戴尔服务器购买合同
计复机网络安全管理创新研究
去软件开发公司面试
如何开始学习网络安全
北京服务器电源种类有哪些
自己电脑搭建服务器的劣势
怎么看电脑远程服务器
当前的主流数据库包括
怎么在asp中添加数据库
dns服务器是什么怎么弄
推荐网易版好玩服务器
保定市纵横软件开发
依法运用网络安全吗
男爵领域服务器上海
苹果注册id 无法联系服务器
信息网络安全包括几个方面
安徽易活网络技术有限责任公司
三级网络技术等级考试题
网站连接sql数据库
网络安全预警管理体系认证标准
中国教育系统网络安全
数据库锁存储过程
多人服务器联机我的世界
网络技术入侵考卷
数据库技术的创新发展
京东方上位机软件开发
深圳软件开发要多久
社区服务器电源
虎门软件开发公司
程序启动ef自动生成数据库