찾다
위챗 애플릿미니 프로그램 개발Huanxin IM을 통합하기 위해 미니 프로그램을 사용하는 방법은 무엇입니까? (첨부코드 예시)

최근 음성 라이브 방송 기능이 있는 작은 프로그램을 만들고 있는데, 검색해 보니 환신 IM 통합 기능을 사용하고 있는데, 실제로 환신을 사용해 작은 프로그램을 만드는 사람이 거의 없습니다. 거의 없고, Huanxin은 2월부터 더 이상 코드를 업데이트하지 않을 것이라고 공식적으로 밝혔습니다(구체적인 이유는 묻지 않았습니다. WeChat 자체가 채팅 도구이므로 별로 유용하지 않을 수도 있습니다)

저희 제품은 채팅방 기능을 이용했는데 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);
    };


};

로그인 메소드를 실행한 후 _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);

Huanxin Connection.js를 수정합니다. code:

//登录代码
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;
};

구체적인 아이디어는 Huanxin 애플릿 코드에 함정이 많기 때문에 문제가 발생하면 소스 코드를 더 살펴보세요. 일부 기능은 직접 수정해야 합니다. 이것이 Huanxin 작업 순서입니다. 내 질문에 답해 주세요:

Huanxin IM을 통합하기 위해 미니 프로그램을 사용하는 방법은 무엇입니까? (첨부코드 예시)

관련 학습 권장 사항: Mini 프로그램 개발 튜토리얼

위 내용은 Huanxin IM을 통합하기 위해 미니 프로그램을 사용하는 방법은 무엇입니까? (첨부코드 예시)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 segmentfault에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전