IM SDK for Cocos2d Js 开发指引

概述

游密即时通讯SDK(IM SDK)为玩家提供完整的游戏内互动服务,游戏开发者无需关注IM通讯复杂的内部工作流程,只需调用IM SDK提供的接口,即可快速实现世界聊天、公会聊天、组队聊天、文字、表情、语音等多项功能。

IM SDK接口调用顺序

IM SDK接口调用顺序

四步集成IM SDK

第一步 注册账号

游密官网注册游密账号。

第二步 添加游戏,获取Appkey

在控制台添加游戏,获得接入需要的Appkey、Appsecret。

第三步 下载IM SDK包体

下载地址

第四步 开发环境配置

开发环境配置

快速接入

1. 导入IM SDK

针对Android导入

  • yim复制到Cocos2d-x开发工具生成的游戏目录根目录下。

  • 拷贝yim下的两个文件:jsb_youmeim.h,jsb_youmeim.cpp到Classes目录。

  • proj.android/jni/Android.mk文件进行如下修改,仅需修改标注部分,其余部分无需处理。

    
    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_MODULE := cocos2djs_shared
    
    LOCAL_MODULE_FILENAME := libcocos2djs
    
    ifeq ($(USE_ARM_MODE),1)
    LOCAL_ARM_MODE := arm
    endif
    
    ##########添加编译jsb_youmeim.cpp,注意上一行末尾添加‘\’####################
    LOCAL_SRC_FILES := hellojavascript/main.cpp \
              ../../Classes/AppDelegate.cpp \
                        ../../Classes/jsb_youmeim.cpp
    ################################################################
    
    ##########添加如下代码,添加头文件路径yim/include .注意上一行结尾处添加换行符\########
    LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes  \
        $(LOCAL_PATH)/../../../../yim/include \
    ################################################################
    
    # _COCOS_HEADER_ANDROID_BEGIN
    # _COCOS_HEADER_ANDROID_END
    
    LOCAL_STATIC_LIBRARIES := cocos2d_js_static
    ##############添加如下代码,链接动态库##############################
    LOCAL_SHARED_LIBRARIES := YIM
    ################################################################
    
    LOCAL_EXPORT_CFLAGS := -DCOCOS2D_DEBUG=2 -DCOCOS2D_JAVASCRIPT
    
    include $(BUILD_SHARED_LIBRARY)
    ####################### 包含YMSDK子配置 #########################
    include $(LOCAL_PATH)/../../../../yim/lib/android/Android.mk
    ################################################################
    
    $(call import-module, scripting/js-bindings/proj.android)
  • 若不需要语音转文字功能,需要对yim/lib/android/Android.mk文件进行如下修改:

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_MODULE := YIM
    LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libyim.so \
    
    include $(PREBUILT_SHARED_LIBRARY)
    
    # ############# 不使用翻译可以删除下面内容 ##############
    include $(CLEAR_VARS)
    
    LOCAL_MODULE := YIMM
    LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libmsc.so \
    
    include $(PREBUILT_SHARED_LIBRARY)
    
    include $(CLEAR_VARS)
    LOCAL_MODULE := YIMNLS
    LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libnlscppsdk.so \                       
    
    include $(PREBUILT_SHARED_LIBRARY)
    
    include $(CLEAR_VARS)
    LOCAL_MODULE := YIMUSC
    LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libuscasr.so \
    
    include $(PREBUILT_SHARED_LIBRARY)
    
    include $(CLEAR_VARS)
    LOCAL_MODULE := YIMU
    LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)+/libuuid.so \
    
    include $(PREBUILT_SHARED_LIBRARY)
    # ###################################################
  • yim/lib/android/ 目录中如下文件复制到proj.android/libs/目录下。

    yim.jar Msc.jar alisr.jar usc.jar Sunflower.jar android-support-v4.jar

  • 修改proj.android/AndroidManifest.xml文件,确保声明了如下权限:
  <!-- 添加到application节点内 -->
  <application xxxx>
      <receiver android:name="com.youme.im.NetworkStatusReceiver" android:label="NetworkConnection" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>
  </application>
  <!-- 添加到跟application平级 -->
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
  <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  <uses-permission android:name="android.permission.RECORD_AUDIO" />
  <!-- 获取地理位置的权限,可选 -->
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  • 打开Eclipse,导入上一步的Android工程,在项目中第一个启动的AppActivity中的onCreate中增加以下Java代码(默认在项目根目录/src目录下): 注意必须把游密的初始化加到第一行,否则可能出现部分机型加载so不正常

    /**
    如果没有onCreate方法,可以添加到onCreateView方法里
    */
    
    @Override
    protected void onCreate(Bundle bundle)
    {
       //下面的两个调用顺序不能错
        com.youme.im.IMEngine.init(this);
        super.onCreate(bundle);           //super.onCreate是默认已经有的,不用再复制
    }
  • 如果打包或生成APK时需要混淆,则需要在proguard.cfg文件中添加如下代码:

    
     -keep class com.youme.IMEngine.**  
     -keep class com.youme.IMEngine.**  
     -keep class com.iflytek.**  
     -keepattributes Signature  

针对iOS导入

  • yim复制到Cocos2d-x开发工具生成的游戏目录根目录下
  • Build Settings -> Search Paths -> Header Search Paths中添加头文件路径:$(SRCROOT)/../../../yim/include/
  • Build Settings -> Search Paths -> User Header Search Paths中添加头文件路径:$(SRCROOT)/../../cocos2d-x/cocos/scripting/js-bindings/manual
  • Build Settings -> Search Paths -> Framework Search Paths中添加框架文件路径:$(SRCROOT)/../../../yim/lib/ios
  • Build Settings -> Search Paths -> Library Search Paths中添加库文件路径:$(SRCROOT)/../../../yim/lib/ios
  • Build Phases -> Link Binary With Libraries添加如下依赖库:

    libc++.1.tbd libsqlite3.0.tbd libresolv.9.tbd SystemConfiguration.framework libYouMeCommon.a libyim.a libz.tbd CoreTelephony.framework iflyMSC.framework //如果是带语音转文字的sdk需要添加 AliyunNlsSdk.framework //如果是带语音转文字的sdk需要添加,动态库,需要在General -> Embedded Binaries也进行添加 USCModule.framework //如果是带语音转文字的sdk需要添加 AVFoundation.framework AudioToolbox.framework CoreLocation.framework

  • 拷贝yim下的两个文件:jsb_youmeim.h,jsb_youmeim.cpp到Classes目录,并加入项目。

  • 需要为iOS10以上版本添加录音权限配置 iOS 10 使用录音权限,需要在info新加Privacy - Microphone Usage Description键,值为字符串,比如“语音聊天需要录音权限”。 首次录音时会向用户申请权限。配置方式如图(选择Private-Microphone Usage Description)。 iOS10录音权限配置

  • LBS添加获取地理位置权限 若使用LBS,需要在info新加Privacy - Location Usage Description键,值为字符串,比如“查看附近的玩家需要获取地理位置权限”。首次使用定位时会向用户申请权限,配置方式如上图录音权限。

针对Windows导入

  • yim复制到Cocos2d-x开发工具生成的游戏目录根目录下

  • 拷贝yim下的两个文件:jsb_youmeim.h,jsb_youmeim.cpp到Classes目录,并加入项目。

  • 拷贝yim/lib/x86 目录下的msc.dll , yim.dll , yim.lib, libusc.dll, jsoncpp-0.y.z.dll, libeay32.dll, nlscppsdk.dll, pthreadVC2.dll, ssleay32.dll拷贝到执行目录(如果是64位机器,使用yim/lib/x64)

  • 在项目 -> 属性 -> C/C++ -> 常规 -> 附加包含目录 中添加 $(ProjectDir)..\..\..\yim\include

    $(EngineRoot)cocos\scripting\js-bindings\manual

  • 在项目->属性->链接器->输入->附加依赖库 中添加 yim.lib(该库是release模式下的 如果运行的时候是debug模式请添加yim_Debug.lib)

2. 初始化

成功导入SDK后,应用启动的第一时间需要调用初始化接口。

注册js接口

  • 引入C++接口文件 #include "jsb_youmeim.h"

  • 注册js方法 regjs.png

获取SDK管理器

为了方便说明如何调用接口,我们全文中都把youmeim作为YouMeIM的实例对象使用

  • 接口和示例:

      var youmeim = new YouMeIM

初始化IM SDK

  • 调用示例:

      var errorcode = youmeim.IM_Init("strAppKey","strAppSecret")
  • 参数:

    • strAppKey:用户游戏产品区别于其它游戏产品的标识,可以在游密官网获取、查看
    • strAppSecret:用户游戏产品的密钥,可以在游密官网获取、查看
  • 返回值:

  • 备注: 此接口本是异步操作,未给出异步回调,一般返回的错误码是Success即表示初始化成功。

3. 设置回调监听

IM引擎底层对于耗时操作都采用异步回调的方式,函数调用会立即返回,操作结果会同步回调。因此,用户必须实现相关接口并在初始化完成以后进行注册。常用功能需要登录回调,聊天室回调,消息回调,如需其它功能查看API接口。

  • 调用示例:

    //登录登出回调
    youmeim.OnLogin = function (errorcode,youmeID)
    {
     cc.log("errorcode:" + errorcode + " youmeID:" + youmeID)
    }
    
    youmeim.OnLogout = function ()
    {
     cc.log("11: OnLogout")
    } 
    
    //进入聊天频道的通知
    youmeim.OnJoinChatroom =   function(errorcode,groupid)
    {
     cc.log("OnJoinChatroom:" + groupid + " errorcode:" + errorcode)
    }
    
    //文本和自定义消息发送状态回调
    youmeim.OnSendMessageStatus =   function(serial,errorcode, sendTime, isForbidRoom, reasonType, endTime)
    {
     cc.log("OnSendMessageStatus" + serial + " errorcode:" + errorcode)
    }
    
    //自己的语音开始上传回调
    youmeim.OnStartSendAudioMessage = function(serial,errorcode,content,localpath,duration)
    {
     cc.log("OnStartSendAudioMessage" + serial + " errorcode:" + errorcode + " content:" + content + " localpath:" + localpath +" duration:" + duration)
    }
    
    //自己的语音消息发送状态回调
    youmeim.OnSendAudioMessageStatus = function(serial,errorcode,content,localpath,duration, sendTime, isForbidRoom, reasonType, endTime)
    {
     cc.log("OnSendAudioMessageStatus" + serial + " errorcode:" + errorcode + " content:" + content + " localpath:" + localpath +" duration:" + duration)
    }
    
    //接收到他人的消息回调
    youmeim.OnRecvMessage =  function(bodytype,chattype, serial,recvid,senderid,content,params,duration)
    {
     cc.log("OnRecvMessage" + bodytype + " chattype:" + chattype + " serial:" + serial + " recvid:" + recvid + " senderid:" + senderid + " content:" + content + " param:" + params )
     if(bodytype==1){
         //文本消息
     }else if(bodytype==5){
         //语音消息
     }
    }
    
    //下载语音文件回调
    youmeim.OnDownload = function( errorcode, strSavepath, bodytype,chattype,serial,recvid,senderid,content,params,duration,createtime ){
    {
     cc.log("OnDownload:" + serial + " errorcode:" + errorcode + " path:" + strSavepath)
    }

4. 登录IM系统

登录界面介绍

成功初始化IM后,需要使用IM功能时,先调用IM SDK登录接口。

  • 调用示例:

      var errorcode = youmeim.IM_Login("userid","user_password","token")
  • 参数:

    • userid:由调⽤者分配,不可为空字符串,只可由字母或数字或下划线组成,用户首次登录会自动注册所用的用户ID和密码
    • user_password:⽤户密码,不可为空字符串,由调用者分配,二次登录时需与首次登录一致,否则会报UsernamePasswordError
    • token:用户验证token,可选,如不使用token验证传入:""
  • 返回值:

  • 回调接口与参数: 登录接口是异步操作,登录成功的标识是OnLogin回调的错误码是Success;调用IM_Login同步返回值是Success才能收到OnLogin回调;特别的如果调用IM_Login多次,收到AlreadyLogin错误码也表示登录成功。

    • 登录回调接口youmeim.OnLogin = function(errorcode,userid)

    • userid:用户ID
    • errorcode:错误码

5. 进入聊天频道

频道

登录成功后,如果有群组聊天需要,比如游戏里面的世界、工会、区域等,需要进入聊天频道,调用方为聊天频道设置一个唯一的频道ID,可以进入多个频道。

  • 调用示例:

      var errorcode = youmeim.IM_JoinChatRoom("room_id")
  • 参数

    • room_id:请求加入的频道ID,仅支持数字、字母、下划线组成的字符串,区分大小写,长度限制为255字节
  • 返回值:

  • 回调接口与参数: 进入频道接口是异步操作,进入频道成功的标识是OnJoinChatroom回调的错误码是Success;调用IM_JoinChatRoom同步返回值是Success才能收到OnJoinChatroom回调。

    • 进入频道回调接口youmeim.OnJoinChatroom=function(errorcode,channelID)

    • errorcode:错误码
    • channelID:频道ID

6. 发送文本消息

频道

在成功登录IM后,即可发送IM消息。

  • 调用示例:

      var requestID = youmeim.IM_SendTextMessage("str_reciver_id",iChatType,"message_content","attachMsg");
  • 参数:

    • str_reciver_id:接收者ID,(⽤户ID或者频道ID)
    • iChatType:聊天类型,私聊传1,频道聊天传2;需要频道聊天得先成功进入频道后发文本消息,此频道内的成员才能接收到消息
    • message_content:聊天内容
    • attachParam:发送文本附加信息
  • 返回值:

    • requestID:消息序列号,用于校验一条消息发送成功与否的标识,-1表示调用失败,失败后不会有回调通知。
  • 回调接口与参数: 发送文本消息接口是异步操作,发送文本消息成功的标识是OnSendMessageStatus回调的错误码是Success;调用IM_SendTextMessage同步返回值是Success才能收到OnSendMessageStatus回调;文本消息发送成功,接收方会收到OnRecvMessage回调,能从该回调中取得消息内容,消息发送者等信息。

    • 发送文本消息回调接口youmeim.OnSendMessageStatus = function(serial,errorcode,sendTime,isForbidRoom,reasonType,forbidEndTime)

    • serial:消息序列号,用于校验一条消息发送成功与否的标识
    • errorcode:错误码
    • sendTime:消息发送时间
    • isForbidRoom:若发送的是频道消息,显示在此频道是否被禁言,true-被禁言,false-未被禁言
    • reasonType:若在频道被禁言,禁言原因类型,0-未知,1-发广告,2-侮辱,3-政治敏感,4-恐怖主义,5-反动,6-色情,7-其它
    • forbidEndTime:若在频道被禁言,禁言结束时间
  • 拓展功能: 发送消息时,可以将玩家头像、昵称、角色等级、vip等级等要素打包成json格式发送。

7. 发送语音消息

发送语音消息

在成功登录IM后,可以发送语音消息

  • 按住语音按钮时,调用IM_SendAudioMessage启动录音
  • 松开按钮,调用IM_StopAudioMessage接口,发送语音消息
  • 按住过程若需要取消发送,调用IM_CancleAudioMessage取消本次语音发送
  • 调用示例:

      // ========== 带文字识别的录音启动 ============
      var requestID = youmeim.IM_SendAudioMessage("reciver_id",chatType)
    
      // ========== 不带文字识别的录音启动(选其中一个) ============
      var requestID = youmeim.IM_SendOnlyAudioMessage("reciver_id",chatType)
    
      // 结束录音
      var errorcode = youmeim.IM_StopAudioMessage("extra_param")
    
      // 不需要本次的录音发送就调取消录音,此时不会收到发送语音消息的回调
      var errorcode = youmeim.IM_CancleAudioMessage()
  • 参数:

    • reciver_id:接收者ID(⽤户ID或者群ID)
    • chatType:消息类型,表示私聊还是频道消息
    • extra_param:发送语音消息附加信息,主要用于调用方特别需求
  • 返回值:

    • requestID:消息序列号,用于校验一条消息发送成功与否的标识,-1表示调用失败,失败后不会有回调通知。

    • errorcode:错误码,详细描述见错误码定义
  • 回调接口与参数: 调用IM_StopAudioMessage接口后,会收到发送语音的回调,如果录音成功会收到开始发送语音的回调OnStartSendAudioMessage,无论录音是否成功都会收到发送语音消息结果的回调OnSendAudioMessageStatusOnStartSendAudioMessage在接收时间上比OnSendAudioMessageStatus快,常用于上屏显示。

    • 发送语音消息回调接口youmeim.OnStartSendAudioMessage = function(serial,errorcode,content,localpath,duration)

      youmeim.OnSendAudioMessageStatus = function(serial, errorcode, content, localpath, duration, sendTime, isForbidRoom, reasonType, endTime)

    • serial:消息序列号,用于校验一条消息发送成功与否的标识
    • errorcode:错误码
    • content:语音转文字识别的文本内容,如果没有用带语音转文字的接口,该字段为空字符串
    • localpath:录音生成的wav文件的本地完整路径
    • duration:录音时长(单位秒)

    • sendTime:消息发送时间
    • isForbidRoom:若发送的是频道消息,显示在此频道是否被禁言,true-被禁言,false-未被禁言
    • reasonType:若在频道被禁言,禁言原因类型,0-未知,1-发广告,2-侮辱,3-政治敏感,4-恐怖主义,5-反动,6-色情,7-其它
    • endTime:若在频道被禁言,禁言结束时间
  • 备注: 此套接口是异步操作,发送语音消息成功的标识是收到OnStartSendAudioMessage,或者OnSendAudioMessageStatus回调的错误码是Success;调用IM_StopAudioMessage同步返回值是Success才能收到回调;语音消息发送成功,接收方会收到OnRecvMessage回调,能从该回调中下载语音文件。

8. 接收消息

接收消息

  • 通过OnRecvMessage接口被动接收消息,需要开发者实现
  • 调用示例:
        youmeim.OnRecvMessage = function(bodytype,chattype, serial,recvid,senderid,content,params,duration,createtime, giftID, giftCount,anchor )
       {
           cc.log("收到消息回调,消息ID:" + serial + ",发送者:"+senderid + ", 接受者:" + recvid );  

          if ( bodytype === 1 )//文本消息
          {
             cc.log("收到文本消息:"+content + ", attachParam:" + param);        
          }
          else if ( bodytype === 5 )//语音消息
          {
             cc.log("收到语音消息,文本内容:"+content + ",附加参数:"+ params + ",语音时长:"+ duration );

             //下载语音文件        
             var errorcode = youmeim.IM_DownloadAudioFile(serial,"save_path");
         }
    };

9. 接收语音消息并播放

接收语音消息

  • 通过bodyType分拣出语音消息(5)
  • serial获得消息ID
  • 点击语音气泡,调用IM_DownloadAudioFile接口下载语音消息
  • 调用方调用IM_StartPlayAudio接口播放语音消息
  • 调用示例:

      //下载语音
      var errorcode = youmeim.IM_DownloadAudioFile("serial","save_path")
    
      //可在下载成功的回调里调播放语音
      var errorcode = youmeim.IM_StartPlayAudio("path")
  • 参数:

    • serial:消息ID,数字字符串
    • save_path:语音文件保存路径

    • path:待播放文件路径
  • 返回值:

  • 回调接口与参数: 下载语音接口是异步操作,下载语音成功的标识是OnDownload回调的错误码为Success,调用IM_DownloadAudioFile接口同步返回值是Success才能收到OnDownload回调。成功下载语音消息后即可播放语音消息。

    • 下载回调接口youmeim.OnDownload = function(errorcode,savePath,bodyType,chatType,serial,recvID,senderID,content,param,audioTime,createTime)

    • errorcode:错误码
    • savePath:保存路径
    • bodyType:消息类型,0-未知类型,1-文本消息,2-自定义消息,3-表情,4-图片,5-语音,6-视频,7-文件,8-礼物
    • chatType:聊天类型,私聊/频道聊天
    • serial:消息ID
    • recvID:消息接收者ID
    • senderID:消息发送者ID
    • content:语音识别的文本内容
    • param:发送语音消息的附加信息
    • audioTime:语音时长(单位:秒)
    • createTime:消息发送时间

    • 播放完成回调接口youmeim.OnPlayCompletion = function ( errorcode, path)

    • errorcode:错误码
    • path:文件路径

10. 登出IM系统

注销账号时,调用登出接口IM_Logout登出IM系统。

  • 调用示例:

      var errorcode = youmeim.IM_Logout()
  • 返回值:

  • 回调接口: 登出是异步操作,登出成功的标识是OnLogout回调的错误码为Success,调用IM_Logout接口同步返回值是Success才能收到OnLogout回调。

    • 登出回调接口youmeim.OnLogout = function()

典型场景集成方案

主要分为世界频道聊天,用户私聊,直播聊天室;集成的时都需要先初始化SDK,登录IM系统

***流程图

启动应用,初始化IM SDK

应用启动的第一时间需要调用初始化接口。

  • 接口与参数:

    • IM_Init:初始化接口
    • strAppKey:用户游戏产品区别于其它游戏产品的标识,可以在游密官网获取、查看
    • strAppSecret:用户游戏产品的密钥,可以在游密官网获取、查看
  • 返回值:

  • 代码示例与详细说明:
    • [JS示例](#初始化IM SDK)

登录应用时,登录IM系统

登录界面介绍

  • 点击登录按钮时,调用IM SDK登录接口。
  • 接口与参数:

    • IM_Login:登录接口
    • userid:由调⽤者分配,不可为空字符串,只可由字母或数字或下划线组成,用户首次登录会自动注册所用的用户ID和密码
    • user_password:⽤户密码,不可为空字符串,由调用者分配,二次登录时需与首次登录一致,否则会报UsernamePasswordError
    • token:用户验证token,可选,如不使用token验证传入:""
  • 返回值:

  • 代码示例与详细说明:
    • [JS示例](#4. 登录IM系统)

典型场景

世界频道聊天

频道

  • 进入应用后,调用加入频道接口,进入世界、公会、区域等需要进入的聊天频道。
  • 应用需要为各个聊天频道设置一个唯一的频道ID。
  • 成功进入频道后,发送频道消息,文本、语音消息等。
  • 接口与参数

    • IM_JoinChatRoom:加入频道
    • room_id:请求加入的频道ID,仅支持数字、字母、下划线组成的字符串,区分大小写,长度限制为255字节
  • 返回值:

  • 代码示例与详细说明:
    • [JS示例](#5. 进入聊天频道)

用户私聊

  • 成功登录IM系统后,可和其它登录IM的用户发私聊消息,文本、语音消息等;发文本消息接口的聊天类型参数使用 1-私聊类型
  • 调用流程查看发送文本消息发送语音消息

直播聊天室

  • 用户集成直播SDK后,导入IM SDK
  • 初始化IM SDK
  • 登录IM 系统
  • 进入指定的聊天频道
  • 发送频道消息(例如:弹幕式),调用流程查看发送文本消息

发送文本消息

频道

  • 点击发送按钮,调用发消息接口,将输入框中的内容发送出去
  • 发送出的消息出现在聊天框右侧
  • 表情消息可以将表情信息打包成Json格式发送
  • 相关接口与参数:

    • IM_SendTextMessage:发文字消息接口
    • str_reciver_id:接收者ID,(⽤户ID或者频道ID)
    • iChatType:聊天类型,私聊传1,频道聊天传2;需要频道聊天得先成功进入频道后发文本消息,此频道内的成员才能接收到消息
    • message_content:聊天内容
  • 返回值:

  • 代码示例与详细说明:

    • [JS示例](#6. 发送文本消息)
  • 拓展功能: 发送消息时,可以将玩家头像、昵称、角色等级、vip等级等要素打包成json格式发送。

发送语音消息

发送语音消息

  • 按住语音按钮时,调用IM_SendAudioMessage
  • 松开按钮,调用IM_StopAudioMessage接口,发送语音消息
  • 按住过程若需要取消发送,调用IM_CancleAudioMessage取消发送
  • 相关接口与参数:

    • IM_SendAudioMessage:发送语音消息接口
    • IM_StopAudioMessage:结束录音接口
    • IM_CancleAudioMessage:取消录音接口

    • reciver_id:接收者ID(⽤户ID或者群ID)
    • chatType:消息类型,表示私聊还是频道消息
    • extra_param:发送语音消息附加信息,主要用于调用方特别需求
  • 返回值:

  • 代码示例与详细说明:
    • [JS示例](#7. 发送语音消息)

接收消息

接收消息

  • 通过OnRecvMessage接口被动接收消息,需要开发者实现,接收消息进行相应的展示,如果是语音消息需要下载语音,以及下载完成后的语音播放
  • 相关接口与参数:

    • OnRecvMessage:收消息接口
  • 代码示例与详细说明:
    • [JS示例](#8. 接收消息)

接收语音消息并播放

接收语音消息

  • 通过bodyType分拣出语音消息(5)
  • serial获得消息ID
  • 点击语音气泡,调用IM_DownloadAudioFile接口下载语音文件
  • 调用方播放语音文件
  • 相关接口与参数:

    • IM_DownloadAudioFile:下载语音文件接口
    • IM_StartPlayAudio:播放语音文件接口

    • serial:消息ID,数字字符串
    • save_path:语音文件保存路径
    • path:待播放文件路径
  • 返回值:

  • 代码示例与详细说明:
    • [JS示例](#9. 接收语音消息并播放)

登出IM系统

更换账号

  • 如下两种情况需要登出IM系统:
  • 注销账号时,调用IM_Logout接口登出IM系统
  • 退出应用时,调用IM_Logout接口登出IM系统
  • 相关接口:

    • IM_Logout:登出接口
  • 返回值:

  • 代码示例与详细说明:
    • [JS示例](#10. 登出IM系统)