主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情! |
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作 |
小程序集成欢馨im最近在做一个带语音直播功能的小程序,用的是欢馨IM的集成功能。因为我搜索了一下,目前使用欢信的小程序非常少,而且欢信官方表示2月起不再更新代码(具体原因我没问,可能微信本身就是聊天工具,所以用处不大)。
我们的产品需要使用聊天室功能。只要在H5登录后加入聊天室:
WebIM.conn.open(选项);WebIM.conn.joinChatRoom(选项1);同样的方法在小程序上不起作用,一直报错:
未定义百度的Cannotread属性' sendiq '曾经说过加入聊天室要放在成功登录后的回调中,所以我查了它的源代码connection.js发现:
connection . prototype . open = function(options){ var pass = _ valid check(options,this);如果(!通过){返回;} var conn = thisif(conn . iso pening()| | conn . iso pened()){ return;} if(options . access token){ options . access _ token = options . access token;_登录(选项,康涅狄格州);} else {//回调函数varsuc = function (data,xhr,myname){ conn . context . status = _ code . status _ dolo gin _ im;conn . context . resttokendata = data;if (data.statusCode!= ' 404 ' & amp& ampdata.statusCode!= '400') {wx.showToast({ title:'登录成功',icon:'无',时长:4000 });}//回调成功后执行this method _login(data.data,conn);};var options = { URL:API URL+'/'+orgName+'/'+appName+'/token ',data: loginfo,suc || _utils.emptyfn,error:error | | _ utils . empty fn };_utils.ajax(选项);}有一个成功登录的内部回调,回调中调用了_login(data.data,conn)的一个方法:
//具体见源码,就不贴代码了。var _ login = function (options,conn){ var callback = function(status,msg) {_ login callback (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 . conn fail){ } else if(status = = Strophe。Status . ATTACHED | | Status = = Strophe . Status . connected){//登录成功} else if(Status = = Strophe . Status . disconnected){ } else if(Status = = Strophe。status . DISCONNECTED){ } else if(status = = Strophe。status . auth fail){ } else if(status = = Strophe。status . ERROR){ } conn . context . status _ now = status;};通过断点发现,当执行到else if (status = = strophe。状态。附上|| status = = strophe。状态。连接),登录成功。所以有必要把回拨加入聊天室放入这个判断中。我的具体方法如下:
//项目封装了一个加入房间函数:function(){ var option 1 = { };var option 2 = { };//加入聊天室webim.conn.join聊天室(选项1);WebIM.conn.joinChatRoom(选项2);};//在ring登录函数中添加一个自己的回调:var options = { API URL:webim . config . API URL,user: userid+' ',pwd: userid+' ',grant _ type:" password & quot;,appKey: WebIM.config.appkey,//回调函数callBack:function(){ //调用加入聊天室that . join room();} };WebIM.conn.open(选项);修改环信连接. js的代码:
//登录代码connection . prototype . open = function(options){ var suc = function(data,xhr,myname){//回调呼入加入聊天室callback _ login (data.data,conn,options . callback);};var options = { URL:API URL+'/'+orgName+'/'+appName+'/token ',data: loginfo,Success:Success | | _ utils . empty fn,//添加回调函数callback: options.callback,error:error | | _ utils . empty fn }加入聊天室;}};//_登录代码var _login = function (options,conn,callback){ var callback = function(status,msg){//将聊天室添加函数传递给_ log in callback function _ log in callback(status,msg,conn,callback);};};//_ loginCallback code 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 . conn fail){ } else if(status = = Strophe。Status . ATTACHED | | Status = = strophe。状态。已连接){//登录成功执行加入聊天室回调();} else if (status == Strophe。status . DISCONNECTING){ } else if(status = = Strophe。status . DISCONNECTED){ } else if(status = = Strophe。status . auth fail){ } else if(status = = Strophe。status . ERROR){ } conn . context . status _ now = status;};这是具体的想法。因为欢馨小程序的代码有很多漏洞,遇到问题就看源代码。有些功能需要自己修改。这是环信回答我问题的工单:
相关学习推荐:小程序开发教程
这几篇文章你可能也喜欢:
- 如何实现小程序发送服务通知(小程序如何主动向用户发送通知)
- 如何获取小程序的unionid(如何获取小程序的页面路径)
- 生成海报的示例小程序(Java后端)(微信小程序生成海报演示)
- 什么是小程序? 有哪些功能?(什么是小程序?有哪些功能?)
- 介绍如何用小程序生成参数二维码(二维码+小程序参数)
本文由主机参考刊发,转载请注明:小程序集成环信IM怎么用?(带有代码示例)(环形接口) https://zhujicankao.com/118234.html
评论前必须登录!
注册