supersdk

文档中心

文档中心

下载文档

IM 模块


IM 模块提供聊天室、私聊、实时语音功能。

一、常用接口

1、登录

接口描述:实时语音登录功能,在初始化完成之后,进入游戏的时候调用。

接口调用:

Map<String, String> map = new HashMap<String, String>();
params.put("user_id", userId); // 用户名
params.put("password", passwrod); // 密码
params.put("token", token); // 使用服务器 token 验证模式时使用该参数,否则使用空字符串
SuperSDK.invoke("social", "YMLogin", params);

如果使用 token 请参考: https://github.com/youmesdk/hyperRTC/blob/master/%E6%B8%B8%E5%AF%86H5%E9%9F%B3%E8%A7%86%E9%A2%91%E8%BF%9E%E9%BA%A6%E5%AE%89%E5%85%A8%E6%A0%A1%E9%AA%8C.md

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {

    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) {
        // 调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result);
        // 判断这是平台模块("social")内的方法,并且方法为登录("login")
    if("social".equals(moduleName) && "YMLogin".equals(funcName)) {
        loginResult(result);
    }else {
        Log.d("supersdk", "其他模块方法的监听结果");
    }
    }
};

privite void loginResult(String result) {
    JSONObject json=JsonUtils.parseObject(result);
    int code=json.getIntValue("code");
    String userid = json.getString("user_id"); // 登录者的 id
    if(code == BCoreCode.SUCCESS){
        Log.d(TAG,"登录成功");
    }else{
      Log.d(TAG,"登录失败");
    }
    Log.e(TAG, "data=" + data);
}

日志打印:

moduleName : social,
funcName : YMLogin,
parameters : {"msg":"登录成功","data":{"user_id":"100"},"code":1}

2、注销

接口描述:退出账号功能。

接口调用:

Map<String, String> params = new HashMap<String, String>();
SuperSDK.invoke("social", "YMLogout", params);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) *{
        // 调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result);
 
        if("social".equals(moduleName) && "YMLogout".equals(funcName)) {
	        // 退出成功,
        }else {
		Log.d("supersdk", "其他模块方法的监听结果");
        }
    }

日志打印:

moduleName : social,
funcName : YMLogout,
parameters : {"msg":"注销成功","code":1}

3、加入频道

接口描述:多人聊天,进入同一个房间。

接口调用:

Map<String, String> params = new HashMap<String, String>();
params.put("room_id", roomId); // 房间号,全局唯一
SuperSDK.invoke("social", "YMJoinChatRoom", params);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {

    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) {
        //调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result);
       
    if("social".equals(moduleName) && "YMJoinChatRoom".equals(funcName)) {
        //进入频道(房间)
        JSONObject json=JsonUtils.parseObject(result);
        int code=json.getIntValue("code");
        if(code == BCoreCode.SUCCESS){
	        //成功
	    }else{
		    Log.d(TAG,"失败");
	    }
	}else {
        Log.d("supersdk", "其他模块方法的监听结果");
    }
}

日志打印:

moduleName : social,
funcName : YMJoinChatRoom,
parameters : {"msg":"加入频道成功","data":{"room_id":"1000"},"code":1}

4、离开频道

接口描述:离开房间。

注意:离开房间后,无法接收到房间信息。

接口调用:

Map<String, String> params = new HashMap<String, String>();
params.put("room_id", roomId);
SuperSDK.invoke("social", "YMLeaveChatRoom", params);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {

    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) {
        // 调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result);
      
    if("social".equals(moduleName) && "YMLeaveChatRoom".equals(funcName)) {
        // 离开房间
        JSONObject json=JsonUtils.parseObject(result);
        int code=json.getIntValue("code");
        if(code == BCoreCode.SUCCESS){
	        // 成功
	    }else{
		    Log.d(TAG,"失败");
	    }
    }else {
        Log.d("supersdk", "其他模块方法的监听结果");
    }
}

日志打印:

moduleName : social,
funcName : YMLeaveChatRoom,
parameters : {"msg":"离开频道成功","data":{"room_id":"1000"},"code":1}

5、发送文本消息

接口描述:即时通信私聊功能,发送私聊,群聊文本信息。

接口调用:

Map<String, String> params = new HashMap<String, String>();
params.put("receiver_id", strRecvID); // 私聊表示接受者的 id,群聊表示频道的 roomid
params.put("chat_type", chatType);  // ChatType,1 是私聊,2 是频道聊天
params.put("content", msgContent); // 发送的文本内容
SuperSDK.invoke("social", "YMSendTextMessage", params);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {

    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) {
        // 调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result);
        // 判断这是平台模块("social")内的方法,并且方法为登录("YMSendTextMessage")
    if("social".equals(moduleName) && "YMSendTextMessage".equals(funcName)) {
        sendMessageResult(result);
    }else {
        Log.d("supersdk", "其他模块方法的监听结果");
    }
}

privite void sendMessageResult(String result) {
    JSONObject json=JsonUtils.parseObject(result);
    int code=json.getIntValue("code");
    if(code == BCoreCode.SUCCESS){
        Log.d(TAG,"发送成功");
    }else{
      Log.d(TAG,"发送失败");
    }
}

日志打印:

moduleName : social,
funcName : YMSendTextMessage,
parameters : {
            "msg":"发送消息成功",
            "data":{
                    "forbid_end_time":0,
                    "message_id":1528372098303,
                    "is_forbid_room":false,
                    "send_time":1528375337,
                    "reason_type":0
                    },
            "code":1
           }

6、发送语音转文字消息

接口描述:发送语音消息,同时会回调语音识别出来的文字。

接口调用:

Map<String, String> params = new HashMap<String, String>();
params.put("receiver_id", strRecvID); // 私聊表示接受者的 id,群聊表示频道的 roomid
params.put("chat_type", chatType); // ChatType,1 是私聊,2 是频道聊天
SuperSDK.invoke("social", "YMStartRecordAudioMessage", params);

7、发送语音不转文字消息

接口描述:仅发送语音消息,不会将语音识别成文字。

接口调用:

Map<String, String> params = new HashMap<String, String>();
params.put("receiver_id", strRecvID); // 私聊表示接受者的 id,群聊表示频道的 roomid
params.put("chat_type", chatType); // ChatType,1 是私聊,2 是频道聊天
SuperSDK.invoke("social", "YMStartOnlyRecordAudioMessage", params);

8、停止并发送语音

接口描述:即时通信私聊功能,给单独游戏玩家发送私聊语音信息(停止录音并发送)。

接口调用:

Map<String, String> params = new HashMap<String, String>();
params.put("attach_msg", attach_msg);
SuperSDK.invoke("social", "YMStopAndSendAudioMessage", params);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {

    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) {
        //调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result);
        //判断这是平台模块("social")内的方法,并且方法为登录("YMStopAndSendAudioMessage")
    if("social".equals(moduleName) && "YMStopAndSendAudioMessage".equals(funcName)) {
        JSONObject json=JsonUtils.parseObject(result);
        int code=json.getIntValue("code");
	    if(code == BCoreCode.SUCCESS){
	        //成功
	    }else{
		    Log.d(TAG,"失败");
	    }
    }else {
        Log.d("supersdk", "其他模块方法的监听结果");
    }
}

日志打印:

moduleName : social,
funcName : YMStopAndSendAudioMessage,
parameters : {
            "msg":"发送语音消息成功",
            "data":{
                    "message_content":"喂喂喂",
                    "send_time":1528376335,
                    "is_forbid_room":false,
                    "message_id":1528376309021,
                    "audio_time":5,
                    "forbid_end_time":0,
                    "path":"\/var\/mobile\/Containers\/Data\/Application\/53EB7877-E862-40D4-B57D-32C622663E84\/Library\/Caches\/AudioRecord\/2611715137.pcm.wav",
                    "reason_type":0
                    },
            "code":1
}

9、取消语音

接口描述:取消录音不发送。

接口调用:

Map<String, String> params = new HashMap<String, String>();
SuperSDK.invoke("social", "YMCancleAudioMessage", params);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {

    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) {
        // 调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result);
        // 判断这是平台模块("social")内的方法,并且方法为登录("YMCancleAudioMessage")
    if("social".equals(moduleName) && "YMCancleAudioMessage".equals(funcName)) {
        JSONObject json=JsonUtils.parseObject(result);
        int code=json.getIntValue("code");
		 if(code == BCoreCode.SUCCESS){
	        // 取消录音成功
	    }else{
		    Log.d(TAG,"取消录音失败");
	    }
	}else {
        Log.d("supersdk", "其他模块方法的监听结果");
    }
}

日志打印:

moduleName : social,
funcName : YMCancleAudioMessage,
parameters : {"msg":"取消录音成功","code":1}

10、播放语音

接口调用:

Map<String, String> params = new HashMap<String, String>();
params.put("path", path); // 音频文件地址
SuperSDK.invoke("social", "YMStartPlayAudio", params);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) {
        // 调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result)
   if("social".equals(moduleName) && "YMStartPlayAudio".equals(funcName)) {
        JSONObject json=JsonUtils.parseObject(result);
        int code=json.getIntValue("code");
	    if(code == BCoreCode.SUCCESS){
	        // 成功
	    }else{
		    Log.d(TAG,"失败");
	    }
	}else {
        Log.d("supersdk", "其他模块方法的监听结果");
    }
}

日志打印:

moduleName : social,
funcName : YMStartPlayAudio,
parameters : {"msg":"播放语音成功","data":{"path":"\/var\/mobile\/Containers\/Data\/Application\/3FF94CCD-DB55-44EC-B74B-D108FF1B85F0\/Library\/Caches\/AudioRecord\/3992812021.pcm.wav"},"code":1}

11、停止语音播放

接口调用:

Map<String, String> params = new HashMap<String, String>();
SuperSDK.invoke("social", "YMStopPlayAudio", params);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) {
        // 调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result)
   if("social".equals(moduleName) && "YMStopPlayAudio".equals(funcName)) {
        JSONObject json=JsonUtils.parseObject(result);
        int code=json.getIntValue("code");
	   if(code == BCoreCode.SUCCESS){
	        // 停止播放成功
	   }else{
		   // 停止播放失败
	   }
	}else {
        Log.d("supersdk", "其他模块方法的监听结果");
    }
}

日志打印:

moduleName : social,
funcName : YMStopPlayAudio,
parameters : {
    "msg" : "停止语音播放成功",
    "code" : 1
}

12、收到消息的回调

接口描述:先判断 msgType 类型,YIMService.MessageBodyType.Voice 表示语音消息,YIMService.MessageBodyType.TXT 文字消息。

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) *{
        // 调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result);
 
        if("social".equals(moduleName) && "YMOnReceiveMessage".equals(funcName)) {
	        // 退出成功
        }else {
		Log.d("supersdk", "其他模块方法的监听结果");
        }
    }

文本消息回调:

moduleName : social,
funcName : YMOnReceiveMessage,
parameters :{
  "code": 1,
  "msg": "收到文本消息成功",
  "data": {
    "message_content": "大王叫我来巡山😌",
    "distance": "0",
    "message_id": 1529911792939,
    "message_type": "1",
    "create_time": 1529911792,
    "chat_type": "1",
    "receiver_id": "100",
    "sender_id": "200"
  }
}

语音消息回调:

moduleName : social,
funcName : YMOnReceiveMessage,
parameters :{
    "code": 1,
    "msg": "success",
    "data": {
        "message_content": "还给你发了。",
        "distance": "0",
        "message_id": 1529911772907,
        "message_type": 5,
        "file_size": "-1", //安卓目前无法拿到文件大小,所以统一回调给的是-1
        "audio_time": 6,
        "create_time": 1529911772,
        "path": "\/storage\/emulated\/0\/Android\/data\/com.youzu.samsung.iap\/files\/im\/1529911772907.wav",
        "chat_type": 1,
        "receiver_id": "100",
        "sender_id": "200"
    }
}

13、加入实时语音频道

接口调用:

Map<String, String> params = new HashMap<String, String>();
params.put("user_id", strUserID);
params.put("room_id", strRoomID);
SuperSDK.invoke("social", "YMJoinChannelSingleMode", params);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) {
        // 调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result)
   if("social".equals(moduleName) && "YMJoinChannelSingleMode".equals(funcName)) {
        JSONObject json=JsonUtils.parseObject(result);
        int code=json.getIntValue("code");
	    if(code == BCoreCode.SUCCESS){
	        // 成功
	    }else{
		    Log.d(TAG,"失败");
	    }
	}else {
        Log.d("supersdk", "其他模块方法的监听结果");
    }
}

日志打印:

moduleName : social,
funcName : YMJoinChannelSingleMode,
parameters : {"msg":"加入语音频道成功","data":{"room_id":"1000","param":"100"},"code":1}

14、离开实时语音频道

接口调用:

Map<String, String> params = new HashMap<String, String>();
SuperSDK.invoke("social", "YMLeaveChannelAll", params);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) {
        // 调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result)
   if("social".equals(moduleName) && "YMLeaveChannelAll".equals(funcName)) {
        JSONObject json=JsonUtils.parseObject(result);
        int code=json.getIntValue("code");
	   if(code == BCoreCode.SUCCESS){
	        // 成功
	    }else{
		    Log.d(TAG,"失败");
	    }
	}else {
        Log.d("supersdk", "其他模块方法的监听结果");
    }
}

日志打印:

moduleName : social,
funcName : YMLeaveChannelAll,
parameters : {"msg":"离开语音频道成功","data":{"room_id":"","param":""},"code":1}

二、IM 可选功能接口

1、开始录音

接口描述:开始录音功能(需要在初始化成功后,登录成功之后调用),结束录音调用”停止录音”,取消录音调用”取消录音”。

接口调用:

Map<String, String> params = new HashMap<>();
params.put("translate", "0"); // 是否翻译成文字  1:翻译 0:不翻译
SuperSDK.invoke("social", "YMStartAudioSpeech", params);

2、停止录音

接口描述:停止录音功能(需要在启动录音之后调用),不通过游密发送该语音消息!

接口调用:

Map<String, String> params = new HashMap<>();
SuperSDK.invoke("social", "YMStopAudioSpeech", params);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) *{
        if("social".equals(moduleName) && "YMStartAudioSpeech".equals(funcName)) {
	        JSONObject json=JsonUtils.parseObject(result);
            int code=json.getIntValue("code");
           if(code == BCoreCode.SUCCESS){
                // 成功
            }else{
                // 失败
            }
        }else {
		Log.d("supersdk", "其他模块方法的监听结果 ");
        }
    }

日志打印:

moduleName : social,
funcName : YMStartAudioSpeech,
parameters : {
    "msg":"录音成功",
    "data":{
        "path":"/var/mobile/Containers/Data/Application/637A42E0-85B7-4CDC-810A-567AF6FA2A86/Library/Caches/AudioRecord/3033701311.wav",
        "audio_time":4,
        "message_content":"一二三四五六七。",
        "download_url":"https://cn-s-youme-im.s3.cn-north-1.amazonaws.com.cn/9f/9f47e7d27a6246b8a4ddd8ff844cfc14.amr?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAPNCTFJWBUFW4LOPA%2F20201217%2Fcn-north-1%2Fs3%2Faws4_request&X-Amz-Date=20201217T080719Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=f994b561c0de1f09ea5e409dcd5631ee45cf4f1b7bb3b496816aa1a315db1a67",
        "file_size":117452
    },
    "code":1
}

3、根据录音下载音频文件

接口描述:根据录音返回的 download_url 链接下载录音文件。

接口调用:

Map<String, String> params = new HashMap<String, String>();
// 语音文件的 url 地址,YMStartAudioSpeech 返回的 downloadURL 地址
params.put("downloadURL", "https://cn-s-youme-im.s3.cn-north-1.amazonaws.com.cn/9f/9f47e7d27a6246b8a4ddd8ff844cfc14.amr?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAPNCTFJWBUFW4LOPA%2F20201217%2Fcn-north-1%2Fs3%2Faws4_request&X-Amz-Date=20201217T080719Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=f994b561c0de1f09ea5e409dcd5631ee45cf4f1b7bb3b496816aa1a315db1a67");
params.put("strSavePath", "保存本地的路径");
SuperSDK.invoke("social", "YMDownloadAudioByUrl", params);

日志打印:

moduleName : social,
funcName : YMDownloadAudioByUrl,
parameters : {
    "msg":"根据url下载录音文件成功",
    "data":{
        "audioTime":2,
        "strFromUrl":"https:\/\/cn-s-youme-im.s3.cn-north-1.amazonaws.com.cn\/00\/0084cb70c9036dde0493dd97574c12ef.amr?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAPNCTFJWBUFW4LOPA%2F20230823%2Fcn-north-1%2Fs3%2Faws4_request&X-Amz-Date=20230823T085648Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=03597706b336e49ce3a128454f47487ef3a26b1da754220cf99b3221bd4c3252",
        "strSavePath":"\/var\/mobile\/Containers\/Data\/Application\/0378A130-F026-4D2F-9C77-6FDEEA52A010\/Library\/Caches\/test.wav"
    },
    "code":1
}

4、设置录音缓存目录

接口描述:设置录音时用于保存录音文件的缓存目录,如果没有设置,SDK 会在 APP 默认缓存路径下创建一个文件夹用于保存音频文件。

接口调用:

Map<String, String> params = new HashMap<String, String>();
params.put("path", "xxx"); // 缓存目录绝对路径,需要先创建好该目录
SuperSDK.invoke("social", "YMSetAudioCachePath", params);

5、获取语音缓存目录

接口描述:返回当前设置的录音缓存目录的完整路径。

接口调用:

String cachePath = SuperSDK.invokeString("social", "YMGetAudioCachePath", null);

6、清理语音缓存目录

接口描述:清空当前设置的录音缓存目录。

接口调用:

boolean cachePath = SuperSDK.invokeBool("social", "YMClearAudioCachePath", null); // 1 成功, 0 失败

7、获取 IM 频道成员数量

接口描述:必须是已经进入的房间。

接口调用:

Map<String, String> params = new HashMap<String, String>();
params.put("room_id", roomId);
SuperSDK.invoke("social", "YMGetRoomMemberCount", params);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {

    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) {
        // 调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result);
        // 判断这是平台模块("social")内的方法,并且方法为登录("YMGetRoomMemberCount")
    if("social".equals(moduleName) && "YMGetRoomMemberCount".equals(funcName)) {
        // 获取房间人数
        JSONObject json=JsonUtils.parseObject(result);
        int code=json.getIntValue("code");
        if(code == BCoreCode.SUCCESS){
	        // 成功
	    }else{
		    Log.d(TAG,"失败");
	    }
	}else {
        Log.d("supersdk", "其他模块方法的监听结果");
    }
}

日志打印:

moduleName : social,
funcName : YMGetRoomMemberCount,
parameters : {
    "msg":"获取房间成员数量成功",
    "data":{
        "room_id":"1000",
        "count":1
    },
    "code":1
}

8、设置只识别语音文字不发送消息

接口描述:适用于语音转文字,再发送文字消息。

Map<String, String> params = new HashMap<String, String>();
params.put("recognition", "1"); // 0 识别语音文字并发送语音消息、1 只识别语音的文字
SuperSDK.invoke("social", "YMSetOnlyRecognizeSpeechText", params);

日志打印:

moduleName : social,
funcName : YMSetOnlyRecognizeSpeechText,
parameters : {
    "msg" : "设置只识别语音文字成功",
    "code" : 1
}

9、识别语音文字的回调

日志打印:

moduleName : social,
funcName : YMOnGetRecognizeSpeechText,
parameters : {
    "msg" : "识别语音文字成功",
    "data" : {
        "message_content" : "嘿嘿。",
        "message_id" : 1529490319218
    },
    "code" : 1
}

10、屏蔽/解除屏蔽用户消息

接口调用:

Map<String, String> params = new HashMap<String, String>();
params.put("user_id", userID); // 用户 ID
params.put("block", block); // 0 解除屏蔽/其他屏蔽
SuperSDK.invoke("social", "YMBlockUser", params);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) {
        // 调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result)
   if("social".equals(moduleName) && "YMBlockUser".equals(funcName)) {
        JSONObject json=JsonUtils.parseObject(result);
        int code=json.getIntValue("code");
	    if(code == BCoreCode.SUCCESS){
	        // 解除(屏蔽)成功
	    }else{
		    Log.d(TAG,"失败");
	    }
	}else {
        Log.d("social", "其他模块方法的监听结果");
    }
}

日志打印:

{
  "msg" : "屏蔽/解除屏蔽用户消息回调成功",
  "data" : {
    "user_id" : "100",
    "block" : "0" // 0 解除屏蔽 / 1 其他屏蔽
  },
  "code" : 1
}

11、解除所有已屏蔽用户

接口调用:

Map<String, String> params = new HashMap<String, String>();
SuperSDK.invoke("social", "YMUnBlockAllUser", params);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) {
        // 调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result)
   if("social".equals(moduleName) && "YMUnBlockAllUser".equals(funcName)) {
        JSONObject json=JsonUtils.parseObject(result);
        int code=json.getIntValue("code");
	    if(code == BCoreCode.SUCCESS){
	        // 成功
	    }else{
		  // 失败
	    }
	}else {
        Log.d("supersdk", "其他模块方法的监听结果");
    }
}

日志打印:

moduleName : social,
funcName : YMUnBlockAllUser,
parameters : {
    "msg" : "解除所有已屏蔽用户成功",
    "code" : 1
}

12、获取被屏蔽消息用户

接口调用:

Map<String, String> params = new HashMap<String, String>();
SuperSDK.invoke("social", "YMGetBlockUsers", params);

接口回调:

if("social".equals(moduleName) && "YMGetBlockUsers".equals(funcName)) {
        JSONObject json=JsonUtils.parseObject(result);
        int code=json.getIntValue("code");
        if(code == BCoreCode.SUCCESS){
	        //成功
	    }else{
		  //失败
	    }
	}else {
        Log.d("supersdk", "其他模块方法的监听结果");
    }

日志打印:

moduleName : social,
funcName : YMGetBlockUsers,
parameters : {
"code": 1,
"msg": " 获取被屏蔽消息用户 成功",
"data": {
    "user_list": [
          "0num",
          "1num",
        ]
    }
}

13、举报功能

接口描述:对用户的违规行为进行举报,管理员在后台进行审核处理并将结果通知用户。

接口调用:

Map<String, String> params = new HashMap<String, String>();
params.put("user_id", userID); // 被举报用户 ID
params.put("chat_type", source); // 来源(私聊 频道) 1 私聊、 2 聊天室
params.put("reason", reason); // 原因
params.put("description", description); // 原因描述 
params.put("nickname", nickname); // 昵称
params.put("vip_level", vip_level); // VIP 等级
params.put("level", level); // 角色等级
SuperSDK.invoke("social", "YMAccusation", params);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) {
        // 调用接口异步监听结果。
        Log.d(TAG, "moduleName:" + moduleName + "\nfuncName:" + funcName + "\nresult:" + result)
   if("social".equals(moduleName) && "YMAccusation".equals(funcName)) {
        JSONObject json=JsonUtils.parseObject(result);
        int code=json.getIntValue("code");
        if(code == BCoreCode.SUCCESS){
	        // 成功
	    }else{
		    Log.d(TAG,"失败");
	    }
	}else {
        Log.d("supersdk", "其他模块方法的监听结果");
    }
}

日志打印:

moduleName : social,
funcName : YMAccusation,
parameters : {
    "msg" : "收到举报处理结果",
    "data" : {
        "user_id" : "100",
        "result" : "1",
        "accusation_time" : 1529571229
    },
    "code" : 1
}

三、实时语音可选功能接口

1、切换语音输出设备

接口描述:默认输出到扬声器,在加入房间成功后设置,如无听筒输出的需求尽量不要调用该接口。

接口调用:

//切换语音输出设备
Map<String, String> params = new HashMap<String, String>();
params.put("loudspeaker","0"); // 0:输出到扬声器,1:输出到听筒
SuperSDK.invoke("social", "YMsetOutputToSpeaker", params);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) *{
        if("social".equals(moduleName) && "YMsetOutputToSpeaker".equals(funcName)) {
	        JSONObject json=JsonUtils.parseObject(result);
            int code=json.getIntValue("code");
           if(code == BCoreCode.SUCCESS){
                // 成功
            }else{
                // 失败
            }
        }else {
		Log.d("supersdk", "其他模块方法的监听结果");
        }
    }

日志打印:

moduleName : social,
funcName : YMsetOutputToSpeaker,
parameters : {
    "msg" : "切换语音输出设备成功",
    "code" : 1
}

2、设置扬声器状态

接口描述:打开/关闭扬声器,该状态值在加入房间成功后设置才有效。

接口调用:

Map<String, String> params = new HashMap<String, String>();
params.put("mute","1"); // 0:关闭扬声器,1:开启扬声器
SuperSDK.invoke("social", "YMsetSpeakerMute", params);

3、设置麦克风状态

接口描述:打开/关闭麦克风,该状态值在加入房间成功后设置才有效。

接口调用:

Map<String, String> params = new HashMap<String, String>();
params.put("mute","1"); // 0:关闭麦克风,1:开启麦克风
SuperSDK.invoke("social", "YMsetMicrophoneMute", params);

4、设置音量大小

接口描述:设置当前程序输出音量大小,建议该状态值在加入房间成功后按需再重置一次。

接口调用:

Map<String, String> params = new HashMap<String, String>();
params.put("volume","1"); // 音量大小,范围[0-100]
SuperSDK.invoke("social", "YMSetVolume", params);

5、获取音量大小

接口描述:获取当前程序输出音量大小,此音量值为程序内部的音量,与系统音量相乘得到程序使用的实际音量。

接口调用:

SuperSDK.invoke("social", "YMGetVolume",null);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) *{
        if("social".equals(moduleName) && "YMGetVolume".equals(funcName)) {
	        JSONObject json=JsonUtils.parseObject(result);
            int code=json.getIntValue("code");
           if(code == BCoreCode.SUCCESS){
                // 成功
            }else{
                // 失败
            }
        }else {
		Log.d("supersdk", "其他模块方法的监听结果");
        }
    }

日志打印:

moduleName:social
funcName:YMGetVolume
result:{
    "code":1,
    "msg":"获取音量成功",
    "data":{
        "volume":1
    }
}

6、设置是否释放麦克风

接口描述:设置当麦克风静音时,是否释放麦克风设备(需要在初始化成功后,加入房间之前调用)。

释放:当麦克风静音时,释放麦克风设备,此时允许第三方模块使用麦克风设备录音。

不释放:不管麦克风是否静音,麦克风设备都会被占用。

接口调用:

Map<String, String> params = new HashMap<String, String>();
params.put("releasemic","1"); // 0:释放麦克风,1:不释放麦克风
SuperSDK.invoke("social", "YMSetReleaseMicWhenMute", params);

接口回调:

private OnSuperSDKListener mSuperSDKListener = new OnSuperSDKListener() {
    @Override
    public void onSuperSDK(String moduleName, String funcName, String result) *{
        if("social".equals(moduleName) && "YMSetReleaseMicWhenMute".equals(funcName)) {
	        JSONObject json=JsonUtils.parseObject(result);
            int code=json.getIntValue("code");
           if(code == BCoreCode.SUCCESS){
                // 成功
            }else{
                // 失败
            }
        }else {
		Log.d("supersdk", "其他模块方法的监听结果 ");
        }
    }

日志打印:

moduleName:social
funcName:YMSetReleaseMicWhenMute
result:{
    "code":1,
    "msg":"设置是否释放麦克风成功"
}