Rumah  >  Artikel  >  applet WeChat  >  Bagaimana untuk menggunakan program mini untuk mengintegrasikan Huanxin IM? (Contoh kod dilampirkan)

Bagaimana untuk menggunakan program mini untuk mengintegrasikan Huanxin IM? (Contoh kod dilampirkan)

藏色散人
藏色散人ke hadapan
2021-09-21 17:27:023672semak imbas

Baru-baru ini saya sedang mengusahakan program kecil dengan fungsi suara langsung, yang menggunakan fungsi penyepaduan IM Huanxin Sejak saya mencari Pada masa ini, di sana memang sangat sedikit orang yang menggunakan Huanxin untuk membuat program kecil, dan Huanxin secara rasmi mengatakan bahawa mereka tidak lagi akan mengemas kini kod mulai Februari (saya tidak meminta sebab tertentu, mungkin WeChat sendiri adalah alat sembang, jadi ia tidak begitu berguna)

Produk kami perlu menggunakan fungsi bilik sembang Anda boleh menyertai bilik sembang selepas melengkapkan log masuk pelanggan H5 sebelum:

 WebIM.conn.open(options);
 WebIM.conn.joinChatRoom(option1);

Kaedah yang sama tidak berfungsi pada mini. program dan terus melaporkan ralat:

Cannot read property 'sendIQ' of undefined

Baidu mencarinya dan berkata bahawa menyertai bilik sembang harus diletakkan dalam panggilan balik selepas berjaya log masuk, jadi saya menyemak sambungan kod sumbernya.js dan mendapati:

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);
    }

Terdapat panggilan balik dalaman untuk log masuk yang berjaya, panggil balik Kaedah _login(data.data, sambung) dipanggil:

//具体里面执行什么去源代码查看,我就不贴代码了
var _login = function (options, conn) {
    
    var callback = function (status, msg) {
      _loginCallback(status, msg, conn);
    };


};

Selepas melaksanakan kaedah log masuk, terdapat panggilan balik _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;
};

Ia didapati melalui titik putus yang apabila melaksanakan Apabila lain jika (status == Strophe.Status.DAMPIL || status == Strophe.Status.CONNECTED), log masuk Berjaya. Oleh itu, panggilan balik untuk menyertai bilik sembang perlu diletakkan dalam penghakiman ini. Kaedah khusus adalah seperti berikut:

//项目中封装一个加入聊天室函数
 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);

Ubah suai kod sambungan Huanxin.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;
};

Idea khusus ialah ini Memandangkan kod applet Huanxin mempunyai banyak masalah, masalah dihadapi Lihat lebih lanjut pada kod sumber Beberapa fungsi memerlukan anda mengubah suai kod itu sendiri pesanan:

Bagaimana untuk menggunakan program mini untuk mengintegrasikan Huanxin IM? (Contoh kod dilampirkan)

Cadangan pembelajaran berkaitan: Tutorial pembangunan program mini

Atas ialah kandungan terperinci Bagaimana untuk menggunakan program mini untuk mengintegrasikan Huanxin IM? (Contoh kod dilampirkan). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:segmentfault.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam