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

藏色散人
Lepaskan: 2022-01-22 09:10:29
ke hadapan
3671 orang telah melayarinya

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);
Salin selepas log masuk

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

Cannot read property 'sendIQ' of undefined
Salin selepas log masuk

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);
    }
Salin selepas log masuk

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


};
Salin selepas log masuk

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;
};
Salin selepas log masuk

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);
Salin selepas log masuk

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;
};
Salin selepas log masuk

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!

Label berkaitan:
sumber:segmentfault.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!