更新记录
                                                                                                    
                                                    
                                                        1.7.4(2025-09-01)
                                                        
                                                    
                                                    修复iOS音乐插件导入失败的问题
                                                                                                    
                                                    
                                                        1.7.3(2024-04-07)
                                                        
                                                    
                                                    修复安卓音视频通话稳定性问题
                                                                                                    
                                                    
                                                        1.7.2(2023-09-17)
                                                        
                                                    
                                                    修复部分机型ios拉流黑屏问题
                                                                                                                                                    查看更多
                                                                                                
                                            
                                                                                                                                                        平台兼容性
                                                                                                                    
| Android | Android CPU类型 | iOS | 
| 适用版本区间:4.4 - 14.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:支持 | 适用版本区间:9 - 17 | 
                                                                                                                                                        
                                            原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios    
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
TX-TRTC
简介
TX-TRTC插件致力于让开发者一键实现腾讯的各种功能,需要uni-app的开发者门阅读腾讯文档,然后根据我的文档就可以找到对应的方法,轻松实现trtc的完整功能
tx-trtc-calling 快速实现呼叫挂断的逻辑
引入模块
const trtcall = uni.requireNativePlugin('tx-trtc-calling');
设置监听事件
trtcall.addDelegate(result=>{
                console.log(result);
        });
登录
trtcall.login({"sdkAppId":xxxxx,"sdkAppKey":"xxxxxxx","userId":user1},result=>{
                                            console.log(result);
})
| 字段 | 说明 | 
| sdkAppId | 实时音视频和腾讯Im的appId | 
| sdkAppKey | 实时音视频和腾讯Im的appKey | 
| userId | 用户id | 
| userSig | 用户签名,与sdkAppKey二选其一,一般为了安全测试期间使用sdkAppKey,上线的时候使用userSig | 
登出
trtcall.logout(result=>{
});
呼叫
trtcall.call({"userId":user,"type"1});
| 字段 | 说明 | 
| userId | 用户id | 
| type | 1    //语音邀请 2//视频邀请 | 
接收
trtcall.accept();
拒绝
trtcall.reject();
挂断
trtcall.hangup();
停止远程用户流
trtcall.stopRemoteView(userid)
停止本地视频采集及预览
trtcall.closeCamara();
切换摄像头
trtcall.switchCamera();
静音
trtcall.setMicMute(true);
准备
请前往https://cloud.tencent.com/product/trtc申请账号
tx-trtc-voiceroom 快速实现常规的语音聊天室的逻辑
引入模块
const voiceroom = uni.requireNativePlugin('tx-trtc-voiceroom');
设置监听事件
voiceroom.addDelegate(result=>{
                console.log(result);
            });
登录
voiceroom.login({"userId":this.userId,"sdkAppId":xxxxxxxxx,"sdkAppKey":"xxxxxxxxxxxxx"},result=>{
                console.log(result);    
            })
| 字段 | 说明 | 
| userId | 用户id | 
| sdkAppId | 实时音视频和腾讯Im的appId | 
| sdkAppKey | 实时音视频和腾讯Im的appKey | 
| userSig | 用户签名,与sdkAppKey二选其一,一般为了安全测试期间使用sdkAppKey,上线的时候使用userSig | 
设置用户信息
voiceroom.setSelfProfile({"userName":"test",userAvatar:""},result=>{
                    console.log(result);
    })
| 字段 | 说明 | 
| userName | 用户名称 | 
| userAvatar | 用户头像 | 
创建房间
voiceroom.createRoom({roomId:that.roomId,roomName:"room",coverUrl:"coverUrl","seatCount":7},result=>{
                            console.log(result);
})
| 字段 | 说明 | 
| roomId | 房间id | 
| roomName | 房间名称 | 
| coverUrl | 房间的头像 | 
| seatCount | 槽位数量 | 
加入语音槽
voiceroom.enterSeat({"seatIndex":0},result=>{
                                console.log(result);
    })
下麦
    voiceroom.leaveSeat(result=>{
                                        console.log(result);
        });
邀请某个上麦
voiceroom.pickSeat({"userId":obj.userId,"seatIndex":chooseIndex},result=>{
                                            console.log(result);
        })
| 字段 | 说明 | 
| userId | 用户id | 
| seatIndex | 槽位下标 | 
关闭槽位
voiceroom.closeSeat({"seatIndex":chooseIndex,"isClose":true},result=>{
    });
| 字段 | 说明 | 
| seatIndex | 槽位下标 | 
| isClose | 是否关闭 | 
禁麦
    voiceroom.muteSeat({"seatIndex":chooseIndex,"isMute":true},result=>{
    });
| 字段 | 说明 | 
| seatIndex | 槽位下标 | 
| isMute | 是否禁麦 | 
观众加入房间
voiceroom.enterRoom({"roomId":roomId},result=>{
    });
发送房间消息
    voiceroom.sendRoomTextMsg({"msg":msg},result=>{
                    console.log(result);
                });
发送房间自定义消息
    voiceroom.sendRoomCustomMsg({"cmd":cmd,"msg":msg},result=>{
                    console.log(result);
                });
| 字段 | 说明 | 
| cmd | 自定义消息类型 | 
| msg | 消息内容 | 
主播销毁房间
voiceroom.destroyRoom(result=>{
                    console.log(result);
})
观众退出房间
voiceroom.exitRoom();
退出登录
voiceroom.logout(result=>{})
获取用户列表
voiceroom.getUserInfoList({"userIdList":["test1"]},result=>{
                    console.log(result);
})
发送邀请
    voiceroom.sendInvitation({"userId":obj.userId,"cmd":"2",content:"邀请你上麦"},result=>{
                                            console.log(result);                    
        })
| 字段 | 说明 | 
| userId | 用户id | 
| cmd | 自定义命令 | 
| content | 消息内容 | 
接受邀请
voiceroom.acceptInvitation({"inviteId":identifier},result=>{
                            })
拒绝邀请
voiceroom.rejectInvitation({"inviteId":identifier},result=>{
                            })
取消邀请
voiceroom.cancelInvitation({"inviteId":identifier},result=>{
                            })
开始麦克风采集
voiceroom.startMicrophone();
停止麦克风采集
voiceroom.stopMicrophone();
设置声音模式
voiceroom.setAuidoQuality();
禁止本地音频采集
voiceroom.muteLocalAudio(true);
| 字段 | 说明 | 
| true or false | 是否禁止声音采集 | 
设置扬声器模式
voiceroom.setSpeaker(true);
| 字段 | 说明 | 
| true or false | 是否设置扬声器 | 
设置sdk采集音量
voiceroom.setAudioCaptureVolume(100);
| 字段 | 说明 | 
| 整型 | 100为原始音量,范围是:[0 ~ 150],默认值为100 | 
设置 SDK 播放音量
voiceroom.setAudioPlayoutVolume(100);
| 字段 | 说明 | 
| 整型 | 100为原始音量,范围是:[0 ~ 150],默认值为100 | 
禁止远程用户音频流
voiceroom.muteRemoteAudio(userid,true);
| 字段 | 说明 | 
| userid(字符串) | 用户id | 
| bool类型 | true or false | 
禁止所有音频流
voiceroom.muteAllRemoteAudio(true);
| 字段 | 说明 | 
| bool类型 | true or false | 
准备
请前往https://cloud.tencent.com/product/trtc申请账号
tx-trtc-liveroom 快速实现常规的直播聊天室的逻辑
引入模块
const liveroom = uni.requireNativePlugin('tx-trtc-liveroom');
设置监听事件
liveroom.addDelegate(result=>{
                console.log(result);
            });
移除监听事件
liveroom.removeDelegate(result=>{
                console.log(result);
            });
登录
liveRoom.login({"sdkAppId":0,"sdkAppKey":"","userId":"","useCDN":true,"cdnPlayDomain":""},result=>{
                                            console.log(result);                                          
                                        })
| 字段 | 说明 | 
| userId | 用户id | 
| sdkAppId | 实时音视频和腾讯Im的appId | 
| sdkAppKey | 实时音视频和腾讯Im的appKey | 
| userSig | 用户签名,与sdkAppKey二选其一,一般为了安全测试期间使用sdkAppKey,上线的时候使用userSig | 
| useCDN | true or false,是否使用cdn | 
| cdnPlayDomain | cdn的播放域名 | 
登出
liveRoom.logout(result=>{
                                            console.log(result);
                                        })
设置用户信息
liveRoom.setSelfProfile({userName:userName,userAvatar:userAvatar},result=>{
                    console.log(result);
                })
            }
| 字段      | 说明                                                         |
| --------- | ------------------------------------------------------------ |
| userName    | 用户名称                                                       |
| userAvatar  | 用户头像                                   |
创建房间
liveRoom.createRoom({roomId:roomId, roomName:"",coverUrl:""},result=>{
                    console.log(result);
                })
销毁房间
liveRoom.destroyRoom(result=>{
                    console.log(result);
            })
加入房间
liveRoom.enterRoom({roomId:roomId},result=>{
                    console.log(result);
                })
离开房间
liveRoom.exitRoom(result=>{
                    console.log(result);
                })
获取房间信息
liveRoom.getRoomInfos({roomIdList:[this.roomId]},result=>{
                    console.log(result);
                })
获取主播列表
liveRoom.getAnchorList(result=>{
                    console.log(result);
                })
获取观众列表
liveRoom.getAudienceList(result=>{
                    console.log(result);
                })
推流并发布
liveRoom.startPublish({"streamId":streamId},result=>{
                    console.log(result);
                })
停止发布
liveRoom.stopPublish(result=>{
                    console.log(result);
                })
观众端请求连麦
liveRoom.requestJoinAnchor({reason:""},result=>{
                    console.log(result);
});
主播端相应连麦
liveRoom.responseJoinAnchor({userId:this.user2,agree:true,reason:""},result=>{
                        console.log(result);
                    })
| 字段 | 说明 | 
| userId | 用户id | 
| agree | 是否同意 | 
| reason | 原因 | 
主播踢除连麦观众
liveRoom.kickoutJoinAnchor({userId:this.user2},result=>{
                    console.log(result);
                })
| 字段      | 说明                                                         |
| --------- | ------------------------------------------------------------ |
| userId    |用户id                                                     |
请求pk
liveRoom.requestRoomPK({
                    roomId:roomId,
                    userId:this.user2
                },result=>{
                    console.log(result);
                    if(result.agree) {
                    }
                })
| 字段 | 说明 | 
| userId | 用户id | 
| roomId | 房间id | 
响应pk
    liveRoom.responseRoomPK({
                        userId:this.user1,
                        agree:true,
                        reason:"",
                    } ,result=>{
                        console.log(result);
                    })
| 字段 | 说明 | 
| userId | 用户id | 
| agree | 是否同意 | 
| reason | 原因 | 
退出pk
liveRoom.quitRoomPK(result=>{
                    console.log(result);
            })
设置镜像
liveRoom.setMirror(true);
是否静音
liveRoom.muteLocalAudio(true);
是否静音远端用户
liveRoom.muteRemoteAudio({userId:"",mute:true})
是否静音远端用户
liveRoom.muteAllRemoteAudio({mute:true});
设置音频质量
liveRoom.setAudioQuality({quality:1})
发送房间消息
liveRoom.sendRoomTextMsg({msg:""},result=>{
                    console.log(result);
                })
发送房间自定义消息
liveRoom.sendRoomCustomMsg({cmd:"",msg:""},result=>{
                    console.log(result);
                })
tx-trtc-meeting 快速实现常规的直播聊天室的逻辑
引入模块
const trtcMeeting = uni.requireNativePlugin('tx-trtc-meeting');
设置监听
    trtcMeeting.addDelegate(result=>{
                    console.log(result);
                },result=>{
                    console.log(result);
                })
移除监听
  trtcMeeting.removeDelegate(result=>{
                   console.log(result);
               })
登陆
trtcMeeting.login({"sdkAppId":0,"sdkAppKey":"","userId":_self.user1},result=>{
                                            console.log(result);
                                        })
设置用户信息
trtcMeeting.setSelfProfile({userName:userName,userAvatar:userAvatar},result=>{
                    console.log(result);
                })
创建会议
trtcMeeting.createMeeting({roomId:roomId},result=>{
                    console.log(result);
                })
加入会议
trtcMeeting.enterMeeting({roomId:roomId},result=>{
                    console.log(result);
                })
销毁会议
trtcMeeting.destroyMeeting({roomId:roomId},result=>{
                    console.log(result);
                })
离开会议
trtcMeeting.leaveMeeting(result=>{
                    console.log(result);
                })
获取用户信息列表
trtcMeeting.getUserInfoList(result=>{
                    console.log(result);
                })
获取用户信息
trtcMeeting.getUserInfo({userId:this.user1},result=>{
                    console.log(result);
                })
设置远程流模式
trtcMeeting.setRemoteViewFillMode(this.user2,0);
设置旋转
trtcMeeting.setRemoteViewRotation(this.user2,0);
设置静音
trtcMeeting.muteRemoteAudio(this.user2,true);
屏蔽远程流
trtcMeeting.muteRemoteVideoStream(this.user2,true);
设置分辨率相关
trtcMeeting.setVideoResolution(112);
trtcMeeting.setVideoFps(15);
trtcMeeting.setVideoBitrate(900);
设置镜像
trtcMeeting.setLocalViewMirror(true);
开启麦克风
trtcMeeting.startMicrophone();
停止麦克风
trtcMeeting.stopMicrophone();
设置声音质量
trtcMeeting.setAudioQuality(1);
静音本地
trtcMeeting.muteLocalAudio(true);
设置扬声器
trtcMeeting.setSpeaker(true);
设置声音采集
trtcMeeting.setAudioCaptureVolume(100);
设置声音播放音量
trtcMeeting.setAudioPlayoutVolume(100);
开启屏幕分享
trtcMeeting.startScreenCapture({videoResolution:112,resMode:1,videoFps:10,enableAdjustRes:false,videoBitrate:1500},result=>{
                    console.log(result);
                })
停止屏幕分享
trtcMeeting.stopScreenCapture();
暂停屏幕分享
trtcMeeting.pauseScreenCapture();
恢复屏幕分享
trtcMeeting.resumeScreenCapture();
发送文本消息
trtcMeeting.sendRoomTextMsg({msg:"hello"},result=>{
                    console.log(result);
                })
发送自定义消息
trtcMeeting.sendRoomCustomMsg({cmd:"0",msg:"hello"},result=>{
                    console.log(result);
                })
切换摄像头
trtcMeeting.switchCamera(true);
TRTCCloud
简介
TRTCCloud插件致力于让开发者一键实现腾讯的推流功能,需要uni-app的开发者门阅读腾讯文档,然后根据我的文档就可以找到对应的方法,轻松实现推流逻辑
快速接入
1.请前往https://cloud.tencent.com/product/trtc申请账号
2.下载示例项目
3.使用自己的appId和appKey替换app.js中的appId和appKey

4.在App原生插件配置选择云端插件,打包自定义基座,然后体验demo(如果不会制作安卓证书参考http://www.appuploader.net/appuploader/onlinetools.php)


api说明
推流组件:TRTCCloud
| 函数名称 | 说明 | 
| enterRoom | 加入房间,具体参数见下 | 
| 参数名 | 说明 | 
| appid | 腾讯平台申请的appid(整数) | 
| appkey | 腾讯平台申请的appsecret(字符串) | 
| userSig | 可以不传appkey的签名,而是直接使用服务器签名好的userSig,这个和appkey二选其一(字符串) | 
| roomId | 房间号(整数) | 
| userId | 用户id(字符串) | 
| role | 用户角色:20 主播  21观众(整数) | 
| scene | 场景说明: 0视频聊天 1直播(整数) | 
| callback | 加入房间后的状态回调 | 
| strRoomId | 字符串房间号(新增)和roomId二者选其一 | 
| scene | 场景,可以取值为正数(1,2,3) | 
| privateMapKey | 用于权限控制的权限票据(选填),当您希望某个房间只能让特定的 userId 进入时,需要使用 privateMapKey 进行权限保护。 | 
| streamId | 用于指定在腾讯云直播平台上的 streamId(选填),设置之后,您可以在腾讯云直播 CDN 上通过标准拉流方案(FLV或HLS)播放该用户的音视频流 | 
| userDefineRecordId | 自动录制方案:需要在“https://console.cloud.tencent.com/trtc => 应用管理 => 云端录制配置”中开启云端录制(选填) | 
离开房间
        trtcCloud.exitRoom({},result=>{
                    console.log(result);
                });
是否屏蔽自己的视频画面
trtcCloud.muteLocalVideo({mute:true,streamType:0},result=>{
                    console.log(result);
                })
| 参数 | 说明 | 
| mute | 是否静止视频 | 
| streamType | 流类型 | 
停止显示所有远端视频画面
trtcCloud.stopAllRemoteView({},result=>{
                    console.log(result);
                })
暂停接收指定的远端视频流
    trtcCloud.muteRemoteVideoStream({userId:this.user2,streamType:0,mute:true},result=>{
                     console.log(result);
                });
| 参数 | 说明 | 
| userId | 用户id | 
| streamType | 流类型 | 
| mute | 是否静止视频 | 
停止接收所有的远端视频流
    trtcCloud.muteRemoteVideoStream({mute:true},result=>{
                     console.log(result);
                });
开启本地音频的采集和上行
trtcCloud.startLocalAudio({quality:2},result=>{
                    console.log(result);
                });
| 参数 | 说明 | 
| quality | 1 人声模式  2 默认模式 3 音乐模式 | 
关闭本地音频的采集和上行
    trtcCloud.stopLocalAudio({},result=>{
                    console.log(result);
                })
静音本地的音频
    trtcCloud.muteLocalAudio({mute:true},result=>{
                    console.log(result);
                })
静音掉某一个用户的声音
    trtcCloud.muteRemoteAudio({userId:this.user2,mute:true},result=>{
                    console.log(result);
                })
| 参数 | 说明 | 
| userId | 用户id | 
| mute | 是否静音 | 
静音掉所有用户的声音
    trtcCloud.muteAllRemoteAudio({mute:true},result=>{
                    console.log(result);
                })
切换摄像头
    trtcCloud.switchCamera({"frontCamera":false},result=>{
                    console.log(result);
                })
| 参数 | 说明 | 
| frontCamera | 是否启用前置摄像头 | 
设置音频路由
    trtcCloud.setAudioRoute({route:0},result=>{
                    console.log(result);
                })
销毁 TRTCCloud 单例
        trtcCloud.destroySharedInstance({},result=>{
                    console.log(result);
                });
转换角色
    trtcCloud.switchRole({"role":20},result=>{
                    console.log(result);
                })
开启音量回调
        trtcCloud.enableAudioVolumeEvaluation({interval:5000},result=>{
                    console.log(result);
                })
发送消息
    trtcCloud.sendCustomCmdMsg({cmd:1,data:"hello",reliable:true,ordered:false},result=>{
                        console.log(result);
                    });
| 参数 | 说明 | 
| cmd | cmd (1-10) | 
| data | 字符串 | 
| reliable | bool | 
| ordered | bool | 
发送sei
        trtcCloud.sendSEIMsg({data:"hello",repeatCount:5},result=>{
                    console.log(result);
                });
| 参数 | 说明 | 
| data | 字符串 | 
| repeatCount | 重复次数 | 
设置本地画面的渲染参数
    trtcCloud.setLocalRenderParams({rotation:0,fillMode:0,mirrorType:0},result=>{
                    console.log(result);
                });
| 参数 | 说明 | 
| rotation | 0 不旋转 1 顺时针旋转90度
 2 顺时针旋转180度
 3 顺时针旋转270度
 | 
| fillMode | 0 填充模式 1 适应模式 | 
| mirrorType | 0 自动模式 1 强制开启镜像 2 强制关闭镜像 | 
设置远端渲染参数
    trtcCloud.setRemoteRenderParams({rotation:0,fillMode:0,mirrorType:0,streamType:0,userId:this.user2},result=>{
                     console.log(result);
                });
| 参数 | 说明 | 
| rotation | 0 不旋转 1 顺时针旋转90度
 2 顺时针旋转180度
 3 顺时针旋转270度
 | 
| fillMode | 0 填充模式 1 适应模式 | 
| mirrorType | 0 自动模式 1 强制开启镜像 2 强制关闭镜像 | 
| streamType | 0 高清大画面 1 低清小画面
 2    辅流画面 一般用于屏幕分享,同一时间在同一个房间中只允许一个用户发布辅流视频
 | 
| userId | 用户id | 
播放本地存储的音乐
        trtcCloud.startPlayMusic({
                    path:"http://mp3.9ku.com/mp3/555/554523.mp3",
                    loopCount:0,
                    id:5
                },result=>{
                    console.log(result);
                })
| 参数 | 说明 | 
| path | 音乐的路径 | 
| loopCount | 循环次数 | 
| id | 音乐id | 
停止播放本地存储的音乐
        trtcCloud.stopPlayMusic({
                    id:5
                },result=>{
                    console.log(result);
                })
暂停播放本地存储的音乐
    trtcCloud.pausePlayMusic({
                    id:5
                },result=>{
                    console.log(result);
                })
继续播放本地存储的音乐
    trtcCloud.resumePlayMusic({
                    id:5
                },result=>{
                    console.log(result);
                })
设置背景音乐的远端音量大小
        trtcCloud.setMusicPublishVolume({
                    id:5,
                    volume:100
                },result=>{
                    console.log(result);
                })
| 参数 | 说明 | 
| id | 音乐id | 
| volume | 声音大小 | 
设置背景音乐的本地音量大小
    trtcCloud.setMusicPlayoutVolume({
                    id:5,
                    volume:100
                },result=>{
                    console.log(result);
                })
| 参数 | 说明 | 
| id | 音乐id | 
| volume | 声音大小 | 
开始录音
    trtcCloud.startAudioRecording({},result=>{
                    console.log(result);
                })
停止录音
    trtcCloud.stopAudioRecording({},result=>{
                    console.log(result);
                })
跨房pk
    let jsonString = JSON.stringify({userId:this.user2,roomId:2});
                trtcCloud.connectOtherRoom({param:jsonString},result=>{
                    console.log(result);
                });
停止跨房pk
    trtcCloud.disconnectOtherRoom({},result=>{
                    console.log(result);
                });
设置订阅模式
    trtcCloud.setDefaultStreamRecvMode({autoRecvAudio:true,autoRecvVideo:true},result=>{
                    console.log(result);
                });
| 参数 | 说明 | 
| autoRecvAudio | 是否自动接收音频数据,默认值:YES | 
| autoRecvVideo | 是否自动接收视频数据,默认值:YES | 
开始向腾讯云直播 CDN 上发布音视频流
    trtcCloud.startPublishing({streamId:"",streamType:0},result=>{
                    console.log(result);
                });
| 参数 | 说明 | 
| streamId | 自定义流 ID | 
| streamType | 0 高清大画面 1 低清小画面
 2    辅流画面 一般用于屏幕分享,同一时间在同一个房间中只允许一个用户发布辅流视频
 | 
停止向腾讯云的直播 CDN 推流
    trtcCloud.stopPublishing({},result=>{
                    console.log(result);
                });
SDK 采集音量
    trtcCloud.setAudioCaptureVolume({volume:100},result=>{
                    console.log(result);
                })
获取 SDK 采集音量
    trtcCloud.getAudioCaptureVolume({},result=>{
                    console.log(result);
                })
SDK 播放音量
        trtcCloud.setAudioPlayoutVolume({volume:100},result=>{
                    console.log(result);
                })
| 参数 | 说明 | 
| volume | 范围是:[0 ~ 150],默认值为100 | 
获取 SDK 播放音量
        trtcCloud.getAudioPlayoutVolume({},result=>{
                    console.log(result);
                })
设置远程音量
    trtcCloud.setRemoteAudioVolume({userId:this.user2,volume:150},result=>{
                    console.log(result);
                })
| 参数 | 说明 | 
| userId | 用户id | 
| volume | 音量大小 | 
截取图片
trtcCloud.snapshotVideo({sourceType:0,userId:"",type:0},result=>{})
| 参数 | 说明 | 
| type | 0 高清大画面 1 低清小画面 2 辅流画面 | 
| sourceType | 0 从视频流中截取原生的视频内容 1 从渲染控件中截取显示的视频内容 | 
| userId | userId 用户 ID,如指定空置表示截取本地的视频画面 不传截取自己 | 
设置视频编码器相关参数
        trtcCloud.setVideoEncoderParam({videoResolution:112,videoBitrate:1200,videoFps:15,resMode:1},result=>{
                    console.log(result);
                });
| 参数 | 说明 | 
| videoResolution | 类型多,见腾讯文档 | 
| videoBitrate | 目标视频码率 | 
| videoFps | 视频采集帧率 | 
| resMode | 分辨率模式(横屏分辨率 or 竖屏分辨率)0 横屏分辨率 1 竖屏分辨率 | 
设置编码器输出的画面镜像模式
trtcCloud.setVideoEncoderMirror({mirror:true},result=>{
                    console.log(result);
                });
| 参数 | 说明 | 
| mirror | true:开启远端画面镜像;false:关闭远端画面镜像,默认值:false | 
设置重力感应的适应模式,聊天模式下可以关闭重力感应
trtcCloud.setGSensorMode({model:0},result=>{
                    console.log(result);
                });
| 参数 | 说明 | 
| model | 0 不适配重力感应 1 适配重力感应 2 适配重力感应 | 
 trtcCloud.startLocalRecording({recordType:2,interval:1000},result=>{
                         console.log(result);
                     })
| 参数 | 说明 | 
| recordType | 0表示仅录制音频 1表示仅录制视频 2表示同时录制音频和视频 | 
| path | 录制文件路径,可以不传 | 
| interval | 制信息更新频率 | 
停止录制
trtcCloud.stopLocalRecording({},result=>{
         console.log(result);
     });
推流组件 TX-PlayView
| 函数名称 | 参数 | 说明 | 
| startLocalPreview | 无 | 开启本地视频的预览画面 | 
| 函数名称 | 参数 | 说明 | 
| stopLocalPreview | 无 | 停止本地视频采集及预览 | 
| 函数名称 | 参数 | 说明 | 
| startRemoteView | 参数用户的userid,比如"xiaoming" | 开始显示远端视频画面 | 
| 函数名称 | 参数 | 说明 | 
| stopRemoteView | 参数用户的userid | 停止显示远端视频画面 | 
| 函数名称 | 参数 | 说明 | 
| joinRoom | 无 | 加入房间 | 
| 函数名称 | 参数 | 说明 | 
| leaveRoom | 无 | 离开房间 | 
| 函数名称 | 参数 | 说明 | 
| enterRoom | 参数列表,回调函数 | 参数列表支持{"appId":xxx,"appKey":xxx,"userSig":xxx,"roomId":xxx,"userId":xxx,"role":xxx,"privateMapKey":xxx,"streamId":xxx,"scene":xxx,"videoResolution":xxx,"videoBitrate":xxx,"videoFps":xxx,"resMode":xxx} 作用:加入房间 | 
播放组件:TX-AVPlayer
| 函数名称 | 参数 | 说明 | 
| startPlay | 无 | 开始播放 | 
| stopPlay | 无 | 停止播放 | 
| pause | 无 | 暂停播放 | 
| resume | 无 | 继续播放 | 
| setCacheStrategy | 整型 | 设置播放的速度 0 快速 1 平滑 2 自动 | 
| startPlayWithUrl | 参数一 播放url地址(String) 参数二:播放类型type(int) | type取值:0  RTMP 直播 1 FLV 直播  2 FLV 点播 3 HLS 点播 4 MP4点播 5 RTMP 直播加速播放 | 
TX-PlayView属性说明:
| 属性名 | 属性值 | 备注 | 
| appId | 应用id(整数) | (必填) | 
| appKey | 应用的签名key(字符串) | 与userSig二选其一 | 
| userSig | 用户的签名(字符串) | 后台生成 与appKey二选其一 | 
| roomId | 房间号(整数) | (必填) | 
| userId | 用户id (字符串) | (必填) | 
| remoteUserId | 远程的用户id (字符串) | 拉取远程用户的流,获取到远程用户id时赋值 | 
| role | 用户角色 (整数) | 20 主播  21观众  (可选)默认20 | 
| scene | 场景 (整数) | 0视频聊天 1直播   (可选)可选 默认0 | 
| whiteness | 美白级别 (整数) | 取值范围0 - 9;0表示关闭,1 - 9值越大,效果越明显 (可选) | 
| ruddiness | 红润级别 (整数) | 取值范围0 - 9;0表示关闭,1 - 9值越大,效果越明显 (可选) | 
| beauty | 美颜级别 (整数) | 取值范围0 - 9; 0表示关闭,1 - 9值越大,效果越明显 (可选) | 
| beatyStyle | 美颜风格 (整数) | 光滑或者自然,0 光滑 1自然 (可选) | 
| videoResolution | 分辨率 (整数) | 见视频分辨率 (可选) | 
| videoBitrate | 视频上行码率 (整数) | 见后文说明,单位kbps (可选) | 
| videoFps | 视频采集帧率 (整数) | (可选) | 
| resMode | 分辨率模式 (整数) | 0横屏 1竖屏 (可选) | 
| enableLocalPreview | 是否开启本地预览 | true开启 false关闭 (可选) | 
| enableLocalAudio | 是否开启音频采集 | true 开启 false关闭 (可选) | 
| mirror | 是否开启镜像模式 | true 开启 false关闭 (可选) | 
| statechange | 推流中的状态回调用 | (可选) | 
| filterFileName | 滤镜图片 | 可取值有15种,见下面说明 (可选) | 
| remoteSubStreamUserId | 远程的屏幕共享的userid (字符串) |  | 
| remoteSubStreamModel | 远程屏幕共享的拉流方式 | 0 全屏  1 自适应 | 
| streamId | 流id(字符串)如果开启旁路推流,此参数有用,用来指令旁路的拉流地址,最终观看的格式为:http://播放域名/live/[streamId].flv | (可选) | 
| filterFileName可取值如下: | 
| bailan.png | 
| chaotuo.png | 
| chunzhen.png | 
| fennen.png | 
| huaijiu.png | 
| landiao.png | 
| langman.png | 
| normal.png | 
| qingliang.png | 
| qingxin.png | 
| rixi.png | 
| weimei.png | 
| white.png | 
| xiangfen.png | 
| yinghong.png | 
| yuanqi.png | 
| yunshang.png | 
TX-AVPlayer属性说明
| 属性名 | 属性值 | 备注 | 
| url | 播放地址 | (必填) | 
| playModel | 播放模式 | 画面裁剪模式: 0 全屏  1 图像适应屏幕,保持画面完整 (可选) | 
| playRotation | 设置画面方向 | Ios : 0 HOME 键在右边,横屏模式 1 HOME 键在下面,手机直播中最常见的竖屏直播模式  2 键在左边,横屏模式 3 HOME 键在上边,竖屏直播.                                                                                       andriod: 0 竖屏  270 横屏模式                                                                        ios和安卓在这个属性上有差别,需要分平台判断,如果用竖屏模式可以不用设置这个,使用默认值,如果设置错误会导致安卓不能全屏 | 
| statechange | 状态回调 | (可选) | 
LivePlayer常用函数
| 函数名称 | 参数 | 说明 | 
| initLivePlayer | 无 | 初始化播放器 | 
| 函数名称 | 参数 | 说明 | 
| setObserver | 回调函数 | 设置播放监听 | 
| 函数名称 | 参数 | 说明 | 
| removeObserver | 无 | 移除播放监听 | 
| 函数名称 | 参数 | 说明 | 
| startPlay | {url:""} | 开始播放音视频流 | 
| 函数名称 | 参数 | 说明 | 
| setPlayoutVolume | {playoutVolume:100} | 设置播放器音量 取值0-100 | 
| 函数名称 | 参数 | 说明 | 
| setRenderFillMode | 整数 | 设置画面的填充模式 0: 图像铺满屏幕 1: 图像长边填满屏幕 | 
| 函数名称 | 参数 | 说明 | 
| setRenderRotation | 整数 | 0: 不旋转 1: 顺时针旋转90度 2: 顺时针旋转180度 3: 顺时针旋转270度 | 
| 函数名称 | 参数 | 说明 | 
| enableVolumeEvaluation | 整数 | 启用播放音量大小提 0为不开启,单位ms | 
| 函数名称 | 参数 | 说明 | 
| enableReceiveSeiMessage | (bool类型,整数) | 开启接收 SEI 消息 | 
| 函数名称 | 参数 | 说明 | 
| snapshot | 无 | 截取播放过程中的视频画面 | 
| 函数名称 | 参数 | 说明 | 
| stopPlay | 无 | 停止播放 | 
| 函数名称 | 参数 | 说明 | 
| isPlaying | 无 | 是否正在播放 | 
| 函数名称 | 参数 | 说明 | 
| pauseAudio | 无 | 暂停播放器的音频流 | 
| 函数名称 | 参数 | 说明 | 
| resumeAudio | 无 | 恢复播放器的音频流 | 
| 函数名称 | 参数 | 说明 | 
| pauseVideo | 无 | 暂停播放器的视频流 | 
| 函数名称 | 参数 | 说明 | 
| resumeVideo | 无 | 恢复播放器的视频流 | 
| 函数名称 | 参数 | 说明 | 
| setCacheParams | {minTime:1,maxTime:5} | 设置播放器缓存自动调整的最小和最大时间 ( 单位:秒 ) | 
TX-TRTCScreenView属性说明
| 属性名 | 属性值 | 备注 | 
| appId | 应用id(整数) | (必填) | 
| appKey | 应用的签名key(字符串) | 与userSig二选其一 | 
| roomId | 房间号(整数) | (必填) | 
| userId | 用户id (字符串) | (必填) | 
| role | 用户角色 (整数) | 20 主播  21观众  (可选)默认20 | 
| scene | 场景 (整数) | 0视频聊天 1直播   (可选)可选 默认0 | 
TX-TRTCScreenView方法说明
| 函数名称 | 参数 | 说明 | 
| startScreen | {audio:1,camera:1,,key:value ....} key 为 TX-TRTCScreenView属性支持的key如roomId,userId,如果这些属性之前设置过,可以不用设置,audio为1开启声音,0关闭声音,camera为1启动视频预览界面,0关闭 | 开启录屏 | 
| stopScreen | 无 | 结束录屏 | 
关于ios和安卓使用TX-TXTRTCCloud录屏的处理
| 函数名称 | 参数 | 说明 | 
| startScreenCapture | {appGroup:xxxx,enableAdjustRes:false,videoResolution:108,resMode:1,videoFps:15,videoBitrate:500} | appGroup:ios使用,可以不填写,安卓直接忽略,enableAdjustRes,videoResolution,resMode,videoFps,videoBitrate都是可选,可以不填写 | 
| stopScreenCapture | 无 | 停止录屏 | 
| pauseScreenCapture | 2个参数 | 传参数({},result=>{}) | 
| resumeScreenCapture | 2个参数 | 传参数({},result=>{}) | 
ios需要应用扩展才能使用录屏功能如果不需要ios的录屏功能请忽略以下步骤
1.按图示创建文件夹和文件具体资源群资源里下载,把nativeplugins放到与pages同级目录

2.修改文件
 
修改identifier为你的应用id,如果你ios工程的包名为com.test.ios,那么你这里应创建的应用id为com.test.ios.xxx类型,然后填写到此处
修改profile为你所创建的应用id对应的profile证书,命名类型为ios-xxxxxx.mobileprovision
修改CFBundleDisplayName为应用扩展的名字,它将显示在此处

3.下载插件例子工程进入screenshare.nvue点击开始录屏
4.长按录屏按钮弹出上图的界面,点击Start Broadcasrt开始录屏
视频分辨率说明
| 常量 | 描述 | 
| TRTCVideoResolution_120_120 = 1 | 建议码率80kbps | 
| TRTCVideoResolution_160_160   = 3 | 建议码率100kbps | 
| TRTCVideoResolution_270_270   = 5 | 建议码率200kbps | 
| TRTCVideoResolution_480_480   = 7 | 建议码率350kbps | 
| TRTCVideoResolution_160_120   = 50 | 建议码率100kbps | 
| TRTCVideoResolution_240_180   = 52 | 建议码率150kbps | 
| TRTCVideoResolution_280_210   = 54 | 建议码率200kbps | 
| TRTCVideoResolution_320_240   = 56 | 建议码率250kbps | 
| TRTCVideoResolution_400_300   = 58 | 建议码率300kbps | 
| TRTCVideoResolution_480_360   = 60 | 建议码率400kbps | 
| TRTCVideoResolution_640_480   = 62 | 建议码率600kbps | 
| TRTCVideoResolution_960_720   = 64 | 建议码率1000kbps | 
| TRTCVideoResolution_160_90   = 100 | 建议码率100kbps | 
| TRTCVideoResolution_256_144   = 102 | 建议码率150kbps | 
| TRTCVideoResolution_320_180   = 104 | 建议码率250kbps | 
| TRTCVideoResolution_480_270   = 106 | 建议码率350kbps | 
| TRTCVideoResolution_640_360   = 108 | 建议码率550kbps | 
| TRTCVideoResolution_960_540   = 110 | 建议码率850kbps | 
| TRTCVideoResolution_1280_720  = 112 | 摄像头采集 - 建议码率1200kbps | 
| TRTCVideoResolution_1920_1080  = 114 | 屏幕分享  - 建议码率800kbps | 
使用说明:
见示例工程中的index.nvue文件
TX-TencentIM组件
TX-TencentIM组件
TX-TencentIM致力于让用户轻松使用im的各种功能,插件永久维护,欢迎提需求👏👏👏
快速接入方法
加载模块
const txIm = uni.requireNativePlugin('TX-TencentIM');
 let isSuccess = txIm.initSDK({
     sdkAppID:1400267352,
     logLevel:0
   },result=>{
        console.log(result);
   })
| 字段 | 说明 | 
| sdkAppID | 腾讯云IM后台应用的appid | 
| logLevel | 日志等级(V2TIM_LOG_NONE             = 0, ///< 不输出任何 sdk log   V2TIM_LOG_DEBUG            = 3, ///< 输出 DEBUG,INFO,V2TIM_LOG_INFO             = 4, ///< 输出 INFO,WARNING,ERROR 级别的 log,V2TIM_LOG_WARN             = 5, ///< 输出 WARNING,ERROR 级别的 log,V2TIM_LOG_ERROR            = 6, ///< | 
| 见例子中的index.nvue出 ERROR 级别的 log)  可以不填写 | 
txIm.login({
                                            sdkAppID: 1400267352,
                                            sdkAppKey: "5f787315061dcad732b8b41185c7b63b09d2a57d8efe1219d803920f84963a0b",
                                            userId: "userTest1",
                                            expireTime:604800,
                                            filePath: plus.io.convertLocalFileSystemURL('_doc')
                                        }, result => {
                                            console.log(result);
                        })
| 字段 | 说明 | 
| sdkAppID | 腾讯云IM后台应用的appid | 
| sdkAppKey | 腾讯云IM后台应用的appKey | 
| userId | 用户id | 
| expireTime | 登录过期时间,可以不填写 | 
| logLevel | 日志等级(V2TIM_LOG_NONE             = 0, ///< 不输出任何 sdk log   V2TIM_LOG_DEBUG            = 3, ///< 输出 DEBUG,INFO,V2TIM_LOG_INFO             = 4, ///< 输出 INFO,WARNING,ERROR 级别的 log,V2TIM_LOG_WARN             = 5, ///< 输出 WARNING,ERROR 级别的 log,V2TIM_LOG_ERROR            = 6, ///< 输出 ERROR 级别的 log)  可以不填写 | 
| filePath | 资源存储地址,可以不填写,使用默认的资源路径 | 
| userSig | 用户签名与sdkAppKey二选其一,一般上线后使用userSig | 
txIm.logout(result=>{
                                            console.log(result);
                        }) 
获取当前登录用户
let user = txIm.getLoginUser();
                console.log(user);
销毁im
    txIm.unInitSDK(result=>{
                    console.log(result);
                })  
let status = txIm.getLoginStatus();
console.log(status);
txIm.addSimpleMsgListener(result=>{
                    console.log(result);
                })
    txIm.addAdvancedMsgListener(result=>{
                    console.log(result);
                })
    txIm.setGroupListener(result=>{
                    console.log(result);
    })
txIm.setConversationListener(result=>{
                    console.log(result);
                })
    txIm.setFriendListener(result=>{
                    console.log(result);
    })
移除基本消息(文本消息和自定义消息)的事件监听器
txIm.removeSimpleMsgListener();
txIm.removeAdvancedMsgListener()
移除群消息监听
txIm.removeGroupListener()
移除好友消息监听
txIm.removeFriendListener()
移除好友监听器
txIm.removeConversationListener()
移除不需要的消息,可以关闭会话的时候调用
txIm.removeMessages({"msgIdList":[this.currentMsgId]},result=>{
                    console.log(result);
                })
针对某个用户的 C2C 消息接收选项
txIm.setC2CReceiveMessageOpt({userIdList:["userTest1"],opt:0},result=>{
    console.log(result);
})
| 字段 | 说明 | 
| userIdList | 用户id列表 | 
| opt | 0, ///< 在线正常接收消息,离线时会进行 APNs 推送  1, ///< 不会接收到消息,离线不会有推送通知 2, ///< 在线正常接收消息,离线不会有推送通知 | 
设置群消息的接收选项
txIm.setGroupReceiveMessageOpt({groupId:"groupTest",opt:0},result=>{
    console.log(result);
})
| 字段 | 说明 | 
| groupId | 群id | 
| opt | 0, ///< 在线正常接收消息,离线时会进行 APNs 推送  1, ///< 不会接收到消息,离线不会有推送通知 2, ///< 在线正常接收消息,离线不会有推送通知 | 
txIm.addFriend({"userId":"user","addWording":"你好","addSource":"andriod",addType:1},result=>{
                    console.log(result)
 })
| 字段 | 说明 | 
| userId | 用户id | 
| addWording | 添加说明 | 
| friendRemark | 备注 | 
| addSource | 添加来源 | 
| addType | 添加类型  1 ///< 单向好友  2 ///< 双向好友 | 
    txIm.getJoinedGroupList(result=>{
                                                console.log(result);
    });
    txIm.getFriendList(result=>{
                console.log(result);
    });
txIm.getFriendsInfo({"userIdList":["userTest1","userTest2"]},result=>{
                    console.log(result);
})
txIm.getGroupsInfo({"groupIdList":["groupTest1","groupTest2"]},result=>{
                    console.log(result);
})
    txIm.setGroupInfo({"groupId":"","groupName":"测试设置       groupName","groupAvatar":"","introduction":"",notification:""},result=>{
                    console.log(result);
    })
| 字段 | 说明 | 
| groupId | 群id | 
| groupName | 群名称 | 
| groupAvatar | 群头像 | 
| introduction | 群简介 | 
| notification | 群公告 | 
| allMuted | 是否全员禁言 | 
| groupAddOpt | 加群是否需要管理员审批, 0禁止加群 1需要管理员审批 2任何人可以加入 | 
| customInfo | {key:value} 自定义字段 | 
    txIm.setReceiveMessageOpt({"groupId":"testGroup1","opt":0},result=>{
                    console.log(result);
    })
| 字段 | 说明 | 
| groupName | 群名称 | 
| opt | 0, ///< 在线正常接收消息  1, ///< 不会接收到群消息 2, ///< 在线正常接收消息,离线不会有推送通知 | 
txIm.getGroupMemberList({"groupId":"testGroup1","filter":0,"nextSeq":0},result=>{
                    console.log(result);
    })
| 字段 | 说明 | 
| groupId | 群id | 
| filter | 0, ///< 全部成员 1, ///< 群主 2, ///< 管理员 4, ///< 普通成员 | 
| nextSeq | 分页拉取标志,第一次拉取填0 | 
    txIm.getGroupMembersInfo({"groupId":this.groupId,"memberList":userIdArr},result=>{
                    console.log(result);
                })
txIm.setGroupMemberInfo({"groupId":"testGroup1","userId":"userTest1","nameCard":"nameCard"},result=>{
                    console.log(result);
})
| 字段 | 说明 | 
| groupId | 群id | 
| userId | 用户id | 
| nameCard | 群成员名片 | 
txIm.muteGroupMember({"groupId":"testGroup1","userId":"userTest1","stime":1000},result=>{
                    console.log(result);
    })
| 字段 | 说明 | 
| groupId | 群id | 
| userId | 用户id | 
| stime | 禁言时间 | 
邀请他人入群
    txIm.inviteUserToGroup({"groupId":"testGroup1","userIdList":["userTest1"]},result=>{
                    console.log(result);
                })
| 字段 | 说明 | 
| groupId | 群id | 
| userIdList | 用户id列表 | 
    txIm.kickGroupMember({"groupId":"testGroup1","userIdList":["userTest1"],"reason":"reason"},result=>{
                    console.log(result);
                })
| 字段 | 说明 | 
| groupId | 群id | 
| userIdList | 用户id列表 | 
| reason | 原因 | 
txIm.setGroupMemberRole({"groupId":"testGroup1","userId":"userTest1","role":300},result=>{
                    console.log(result);
    })
| 字段 | 说明 | 
| groupId | 群id | 
| userId | 用户id | 
| role | 用户角色 200, ///< 群成员 300, ///< 群管理员 400, ///< 群主 | 
txIm.transferGroupOwner({"groupId":"testGroup1","userId":"userTest2"},result=>{
                    console.log(result);
                })
| 字段 | 说明 | 
| groupId | (群id) | 
| userId | 用户id | 
txIm.getGroupApplicationList(result=>{
                    console.log(result);
                    if(result.groupApplicationList.length > 0) {
                        this.groupApplicationIndex = 0;
                    }
                })
获取加群的申请列表
txIm.getGroupApplicationList(result=>{
                    console.log(result);
                    if(result.groupApplicationList.length > 0) {
                        this.groupApplicationIndex = 0;
                    }
})
txIm.acceptGroupApplication({"index":0},result=>{
                    console.log(result);
    })
| 字段 | 说明 | 
| index | 下标值,有getGroupApplicationList返回 | 
    txIm.refuseGroupApplication({"index":0},result=>{
                    console.log(result);
                })
| 字段 | 说明 | 
| index | 下标值,有getGroupApplicationList返回 | 
| reason | 原因 | 
txIm.setGroupApplicationRead(result=>{
                    console.log(result);
                })
txIm.getConversationList({nextSeq:0,count:100},result=>{
                    console.log(result);
                    if(result.conversationList.length > 0) {
                        this.conversationId = result.conversationList[0].conversationId
                    }
    })
| 字段 | 说明 | 
| nextSeq | 分页拉取游标,第一次默认取传 0 | 
| count | 分页拉取的个数,一次分页拉取不宜太多,会影响拉取的速度,建议每次拉取 100 个会话 | 
    txIm.deleteConversation({conversationId:""},result=>{
                    console.log(result);
        })
| 字段 | 说明 | 
| conversationId | 会话id,由getConversationList返回 | 
txIm.setConversationDraft({conversationId:"",draftText:""},result=>{
})
| 字段 | 说明 | 
| conversationId | 会话id,由getConversationList返回 | 
| draftText | 草稿文本 | 
txIm.getUsersInfo({userIdList:["userTest1"]},result=>{
                    console.log(result);
        })
    txIm.setSelfProfile({"userName":"myUserName","userAvatar":"",gender:1},result=>{
                    console.log(result);
                })
| 字段 | 说明 | 
| userName | 用户昵称 | 
| userAvatar | 用户头像 | 
| gender | 性别 0, ///< 未知性别 1, ///< 男性 2, ///< 女性 | 
| allowType | 0, ///< 同意任何用户加好友 1, ///< 需要验证 2, ///< 拒绝任何人加好友 | 
| customInfo | {key:value} 自定义字段 | 
设置会话草稿
    txIm.setConversationDraft({"conversationId":"test","draftText":"test"},result=>{
                    console.log(result);
                })
    txIm.sendGroupTextMessage({"textMsg":"hello my group message","groupId":"testGroup1","priority":0},result=>{
                    console.log(result);
                })
| 字段 | 说明 | 
| textMsg | 消息 | 
| groupId | 群id | 
txIm.sendGroupCustomMessage({"customMsg":"hello my group custom message","groupId":"","priority":0},result=>{
                    console.log(result);
        })
| 字段 | 说明 | 
| customMsg | 消息 | 
| priority | 消息优先级 | 
txIm.sendC2CTextMessage({"textMsg":"hello","userId":"userTest1"},result=>{
                    console.log(result);
    });
| 字段 | 说明 | 
| textMsg | 消息 | 
| userId | 用户id | 
txIm.sendC2CCustomMessage({"customMsg":"hello","userId":"userTest1"},result=>{
                    console.log(result);
    });
| 字段 | 说明 | 
| customMsg | 消息 | 
| userId | 用户id | 
    txIm.createGroup({
                    groupType: "Work",
                    groupId: this.groupId,
                    groupName: "my_group"
                }, result => {
                    console.log(result);
                })
| 字段 | 说明 | 
| groupType | 群类型  Work 工作群  Public 公开群  Meeting 会议群 AVChatRoom 直播群 | 
| groupName | 群名称 | 
| groupId | 群id | 
txIm.createGroupWithMemberList({
                    groupType: "Public",
                    groupId: this.groupId,
                    groupName: "my_group",
                    groupAvatar:"",
                    introduction:"",
                    memberList:[
                        {
                            userId:"MyGroupUserId1",
                            role:400
                        },
                        {
                            "userId":"MyGroupUserId2",
                            "role":0
                        },
                        {
                            "userId":"MyGroupUserId3",
                            "role":400
                        }
                    ]
                }, result => {
                    console.log(result);
                })
| 字段 | 说明 | 
| groupId | 群id | 
| groupName | 群名称 | 
| groupType | 群类型 | 
| memberList | 群成员列表 userId:用户id role:200, ///< 群成员 300, ///< 群管理员 400, ///< 群主 | 
txIm.joinGroup({"groupId":"testGroup1"},result=>{
                    console.log(result);
})
    txIm.quitGroup({"groupId":"testGroup1"},result=>{
                    console.log(result);
    })
    txIm.deleteGroup({"groupId":"testGroup1"},result=>{
                    console.log(result);
    })
获取指定群在线人数
    txIm.getGroupOnlineMemberCount({groupId:this.groupId},result=>{
                    console.log(result);
                })
获取所有的未读消息数量
txIm.getTotalUnreadMessageCount(result=>{
     console.log(result);
})
初始化群属性
    txIm.initGroupAttributes({groupId:this.groupId,attributes:{key:"key1"}},result=>{
                    console.log(result);
                })
| 字段 | 说明 | 
| groupId | id | 
| attributes | 群属性,key value的形式 | 
获取群属性
    txIm.getGroupAttributes({groupId:this.groupId},result=>{
                    console.log(result);
                })
设置群属性
txIm.setGroupAttributes({groupId:this.groupId,attributes:{
                        "key1":"value1",
                        "key2":"value2"
                    }},result=>{
                        console.log(result);
                    })
| 字段 | 说明 | 
| groupId | id | 
| attributes | 群属性,key value的形式 | 
删除群属性
    txIm.deleteGroupAttributes({groupId:this.groupId,keys:["key1","key2"]},result=>{
                    console.log(result);
                })
| 字段 | 说明 | 
| groupId | id | 
| keys | 清空的属性,不传清空所有的属性 | 
禁言
| 字段 | 说明 | 
| groupId | 群id | 
| userId | 用户id | 
| stime | 时间 | 
禁言
| 字段 | 说明 | 
| groupId | 群id | 
| userId | 用户id | 
| stime | 时间 | 
txIm.sendImageMessage({"path":"","userId":"userTest1"},result=>{
                    console.log(result);
    });
| 字段 | 说明 | 
| path | 路径 | 
| userId | 用户id | 
| groupId | 群id | 
| priority | 优先级,整数 | 
| onlineUserOnly | 是否为在线接收,true or false,默认false | 
| title | 推送title | 
| desc | 推送描述 | 
| ext | 推送附加信息 | 
    txIm.sendSoundMessage({"path":"","userId":"userTest1","duration":1},result=>{
                console.log(result); 
    });
| 字段 | 说明 | 
| path | 路径 | 
| userId | 用户id | 
| groupId | 群id | 
| priority | 优先级,整数 | 
| onlineUserOnly | 是否为在线接收,true or false,默认false | 
| duration | 时间长度 | 
| title | 推送title | 
| desc | 推送描述 | 
| ext | 推送附加信息 | 
    txIm.sendVideoMessage({"path":"","userId":"userTest1","duration":1},result=>{
                console.log(result); 
    });
| 字段 | 说明 | 
| path | 路径 | 
| userId | 用户id | 
| groupId | 群id | 
| priority | 优先级,整数 | 
| onlineUserOnly | 是否为在线接收,true or false,默认false | 
| duration | 时间长度 | 
| snapshotPath | 封面图 | 
| type | 视频类型,如 mp4 mov 等 | 
| title | 推送title | 
| desc | 推送描述 | 
| ext | 推送附加信息 | 
txIm.sendFileMessage({"path":res.filePath,"userId":user,fileName:res.fileName},result=>{
                                        console.log(result);
    });
| 字段 | 说明 | 
| path | 路径 | 
| userId | 用户id | 
| groupId | 群id | 
| priority | 优先级,整数 | 
| onlineUserOnly | 是否为在线接收,true or false,默认false | 
| fileName | 文件名称 | 
| title | 推送title | 
| desc | 推送描述 | 
| ext | 推送附加信息 | 
txIm.sendLocationMessage({"userId":user,"des":"","longitude":66,"latitude":66,"priority":0},result=>{
                            console.log(result);
    });
| 字段 | 说明 | 
| des | 描述 | 
| longitude | 经度 | 
| latitude | 纬度 | 
| userId | 用户id | 
| groupId | 群id | 
| priority | 优先级,整数 | 
| onlineUserOnly | 是否为在线接收,true or false,默认false | 
| title | 推送title | 
| desc | 推送描述 | 
| ext | 推送附加信息 | 
发送表情包消息
    txIm.sendFaceMessage({
                    "userId":user,
                    faceIndex:19,
                    faceData:""
                },result=>{
                    console.log(result);
    })
| 字段 | 说明 | 
| userId | 用户id | 
| groupId | 群id | 
| priority | 优先级整数 | 
| onlineUserOnly | rue or false,默认false | 
| faceIndex | 整数 | 
| faceData | 字符串 | 
| title | 推送title | 
| desc | 推送描述 | 
| ext | 推送附加信息 | 
创建文本消息
    let message = txIm.createTextMessage({textMsg:"test"});
创建图片消息
    let message = txIm.createImageMessage({path:this.imagePath});
创建语音消息
    let message = txIm.createSoundMessage({path:"",duration:0}) 
| 字段 | 说明 | 
| path | 语音文件路径 | 
| duration | 时长 | 
创建视频消息
    let message = txIm.createVideoMessage({path:"",type:0,duration:0,snapshotPath:""}); 
| 字段 | 说明 | 
| path | 视频文件路径 | 
| duration | 时长 | 
| snapshotPath | 封面图 | 
创建文件消息
    let message = txIm.createFileMessage({path:"",fileName:""});    
| 字段 | 说明 | 
| path | 文件路径 | 
| fileName | 文件名称 | 
创建位置消息
    let message = txIm.createLocationMessage({des:"",longitude:0,latitude:0});  
| 字段 | 说明 | 
| des | 描述 | 
| longitude | 经度 | 
| latitude | 纬度 | 
创建表情消息
    let message = txIm.createFaceMessage({faceIndex:0,faceData:""});    
| 字段 | 说明 | 
| faceIndex | 表情下标 | 
| faceData | 表情data | 
创建@消息
    let message = txIm.createTextAtMessage({textMsg:"",userIdList:[]}); 
| 字段 | 说明 | 
| textMsg | 文本消息 | 
| userIdList | 用户id的列表 | 
发送消息
    txIm.sendMessage({"userId":user,"createMessageId":this.createMessageId},result=>{
                    console.log(result);
                })      
| 字段 | 说明 | 
| userId | 用户id | 
| groupId | 群id | 
| priority | 消息优先级 | 
| onlineUserOnly | 是否在线用户 | 
| cloudCustomData | 云端自定义数据 | 
| title | 推送的title | 
| desc | 推送的描述 | 
| ext | 推送的附加字段 | 
txIm.deleteFromFriendList({
                    "userIdList":["userTest2"],
                    "deleteType":1
                },result=>{
                    console.log(result);
    })
| 字段 | 说明 | 
| userIdList | 用户id的列表 | 
| deleteType | 1, ///< 单向好友 2, ///< 双向好友 | 
删除消息
  txIm.deleteMessages({"msgIdList":[this.currentMsgId]},result=>{
                    console.log(result);
                })  
txIm.checkFriend({
                    "userId":"userTest2",
                },result=>{
                    console.log(result);
    })
txIm.getFriendApplicationList(result=>{
                    console.log(result);
    })
txIm.acceptFriendApplication({
                    "userId":"userTest2",
                    "type":0
                },result=>{
                    console.log(result);
    })
| 字段 | 说明 | 
| userId | 用户id | 
| type | 好友申请接受类型 0, ///< 接受加好友(建立单向好友)1, ///< 接受加好友并加对方为好友(建立双向好友) | 
txIm.refuseFriendApplication({
                    "userId":"userTest2"
                },result=>{
                    console.log(result);
    })
txIm.deleteFriendApplication({
                    "userId":"userTest2"
                },result=>{
                    console.log(result);
    })
txIm.setFriendApplicationRead(
        result=>{
                    console.log(result);
    })
txIm.addToBlackList({
                    "userIdList":["userTest2"]
                },result=>{
                    console.log(result);
    })
txIm.getBlackList(
                    result=>{
                        console.log(result);
                    }
    )
txIm.deleteFromBlackList({"userIdList":["userTest1"]},
                    result=>{
                        console.log(result);
                    }
                )
txIm.createFriendGroup({"groupName":this.friendGroupName,"userIdList":["userTest2"]},
                    result=>{
                        console.log(result);
                    }
                )
| 字段 | 说明 | 
| groupName | 分组名称 | 
| userIdList | 用户id列表 | 
txIm.getFriendGroupList({"groupNameList":["friendGroupName"]},result=>{
                    console.log(result);
    })
| 字段 | 说明 | 
| groupNameList | 要获取信息的好友分组名称列表 | 
txIm.deleteFriendGroup({"groupNameList":["friendGroupName"]},result=>{
                    console.log(result);
})
| 字段 | 说明 | 
| groupNameList | 好友分组名称列表 | 
txIm.renameFriendGroup({"oldName":"oldName","newName":"newName"},result=>{
                    console.log(result);
    })
| 字段 | 说明 | 
| oldName | 旧的名称 | 
| newName | 新的名称 | 
txIm.addFriendsToFriendGroup({"groupName":"friendGroupName","userIdList":["userTest1"]},
                    result=>{
                        console.log(result);
                    }
    )
| 字段 | 说明 | 
| groupName | 组名 | 
| userIdList | 用户id的列表 | 
txIm.deleteFriendsFromFriendGroup({"groupName":"friendGroupName","userIdList":["userTest1"]},
                    result=>{
                        console.log(result);
                    }
)
| 字段 | 说明 | 
| groupName | 组名 | 
| userIdList | 用户id的列表 | 
txIm.getC2CHistoryMessageList({"userId":"userTest1","count":10,"msgId":""},result=>{
                    console.log(result);
    })
| 字段 | 说明 | 
| userId | 用户id | 
| count | 拉取消息的个数 | 
| msgId | 分页的msgId,第一次可以传"" | 
txIm.getGroupHistoryMessageList({"groupId":"groupTest1","count":10,"msgId":""},result=>{
                    console.log(result);
    })
| 字段 | 说明 | 
| groupId | 群组id | 
| count | 拉取消息的个数 | 
| msgId | 分页的msgId,第一次可以传"" | 
撤回消息
    txIm.revokeMessage({"msgId":this.currentMsgId},result=>{
                    console.log(result);
    });
    txIm.markC2CMessageAsRead({"userId":"userTest2"},result=>{
                    console.log(result);
    })
txIm.markGroupMessageAsRead({"groupId":this.groupId},result=>{
                    console.log(result);
    })
    txIm.deleteMessageFromLocalStorage({"msgId":this.currentMsgId},result=>{
                    console.log(result);
    });
txIm.insertGroupMessageToLocalStorage({"createMessageId":this.createMessageId,"groupId":this.groupId,"userId":this.currentUser},result=>{
                    console.log(result);
    });
| 字段 | 说明 | 
| createMessageId | 创建的消息id | 
| sender | 群id | 
| userId | 发送者id | 
清空群聊本地及云端的消息
txIm.clearGroupHistoryMessage({groupId:""},result=>{
    console.log(result);
});
插入一对一单聊消息
txIm.insertC2CMessageToLocalStorage({"createMessageId":this.createMessageId,"sender":this.currentUser,"to":user},result=>{
                    console.log(result);
    });
| 字段 | 说明 | 
| createMessageId | 创建的消息id | 
| sender | 发送者id | 
| to | 发送给其他人的id | 
清空单聊本地及云端的消息
txIm.clearC2CHistoryMessage({userId:""},result=>{
    console.log(result);
});
txIm.sendTextAtMessage({"textMsg":"@消息","groupId":this.groupId,"userIdList":["userTest1","all"]},result=>{
                    console.log(result);
    });
| 字段 | 说明 | 
| textMsg | 文本消息 | 
| groupId | 群id | 
| userIdList | 用户id列表,需要@所有人,在id列表中加all | 
| priority | 消息优先级 | 
| onlineUserOnly | 是否在线用户 | 
| title | 推送title | 
| desc | 推送描述 | 
| ext | 推送附加信息 | 
txIm.setFriendInfo({"userId":"userTest2","friendRemark":"friendRemarkValue"},result=>{
                    console.log(result);
    });
| 字段 | 说明 | 
| userId | 用户id | 
| friendRemark | 好友备注 | 
| friendCustomInfo | {key:value} 自定义字段 | 
txIm.invite({"invitee":user,"data":JSON.stringify(data),"onlineUserOnly":false},result=>{
                    console.log(result);
                });
| 字段 | 说明 | 
| invitee | 被邀请人用户 ID | 
| data | 自定义数据 | 
| onlineUserOnly | 是否只有在线用户才能收到邀请 | 
| timeout | 超时时间,单位 s,如果设置为 0,SDK 不会做超时检测 | 
| title | 推送title | 
| desc | 推送描述 | 
| ext | 推送附加信息 | 
txIm.inviteInGroup({"groupId":this.group,"inviteeList":[user],"data":JSON.stringify(data),"onlineUserOnly":false},result=>{
                    console.log(result);
                });
| 字段 | 说明 | 
| groupId | 发起邀请所在群组 | 
| inviteeList | 被邀请人列表 | 
| data | 自定义数据 | 
| onlineUserOnly | 是否只有在线用户才能收到邀请 | 
| timeout | 超时时间,单位 s,如果设置为 0,SDK 不会做超时检测 | 
| title | 推送title | 
| desc | 推送描述 | 
| ext | 推送附加信息 | 
txIm.accept({"inviteId":this.inviteData.inviteId,data:JSON.stringify(data)},result=>{
                        console.log(result);
                    });
| 字段 | 说明 | 
| inviteId | 邀请id | 
| data | 自定义数据 | 
txIm.reject({"inviteId":this.inviteData.inviteId,data:JSON.stringify(data)},result=>{
                        console.log(result);
                    });
| 字段 | 说明 | 
| inviteId | 邀请id | 
| data | 自定义数据 | 
txIm.cancel({"inviteId":this.inviteData.inviteId,data:JSON.stringify(data)},result=>{
                        console.log(result);
                    });
| 字段 | 说明 | 
| inviteId | 邀请id | 
| data | 自定义数据 | 
下载图片
txIm.downloadImage({"msgId":msg.msgId},progressResult=>{
                                console.log(progressResult);
                            },succResult=>{
                                console.log(succResult);
                            },failResult=>{
                                console.log(failResult);
                            })
| 字段 | 说明 | 
| msgId | 消息id | 
| progressResult | 下载进度 | 
| succResult | 成功回调 | 
| failResult | 失败回调 | 
下载语音
txIm.downloadSound({"msgId":msg.msgId},progressResult=>{
                                console.log(progressResult);
                            },succResult=>{
                                console.log(succResult);
                            },failResult=>{
                                console.log(failResult);
                            })
| 字段 | 说明 | 
| msgId | 消息id | 
| progressResult | 下载进度 | 
| succResult | 成功回调 | 
| failResult | 失败回调 | 
下载视频
txIm.downloadVideo({"msgId":msg.msgId},progressResult=>{
                                console.log(progressResult);
                            },succResult=>{
                                console.log(succResult);
                            },failResult=>{
                                console.log(failResult);
                            })
| 字段 | 说明 | 
| msgId | 消息id | 
| progressResult | 下载进度 | 
| succResult | 成功回调 | 
| failResult | 失败回调 | 
下载文件
txIm.downloadFile({"msgId":msg.msgId},progressResult=>{
                                console.log(progressResult);
                            },succResult=>{
                                console.log(succResult);
                            },failResult=>{
                                console.log(failResult);
                            })
| 字段 | 说明 | 
| msgId | 消息id | 
| progressResult | 下载进度 | 
| succResult | 成功回调 | 
| failResult | 失败回调 | 
获取sound资源url
txIm.getSoundUrl({"msgId":msg.msgId},result=>{
                                console.log(result);
                            })
| 字段 | 说明 | 
| msgId | 消息id | 
| result | 资源回调 | 
获取视频资源url
txIm.getVideoUrl({"msgId":msg.msgId},result=>{
                                console.log(result);
                            })
| 字段 | 说明 | 
| msgId | 消息id | 
| result | 资源回调 | 
获取文件url
txIm.getFileUrl({"msgId":msg.msgId},result=>{
                                console.log(result);
                            })
| 字段 | 说明 | 
| msgId | 消息id | 
| result | 资源回调 | 
txIm.setAPNS({businessId:23834},result=>{
                                                });
| 字段 | 说明 | 
| businessId | 腾讯后台填写平台推送信息后获取的id | 
| result | 回调数据 | 
txIm.setOfflinePushConfig({"businessId":11632,"token":""},result=>{
                                                    console.log(result);
                                                })
| 字段 | 说明 | 
| businessId | 腾讯后台填写平台推送信息后获取的id | 
| result | 回调数据 | 
| token | 使用tpns获取的token值 | 
加强版函数新增
搜索本地消息
txIm.searchLocalMessages({"keywordList":["test"],"pageIndex":0,"pageSize":10},result=>{
                                                    console.log(result);
                                                })
| 字段 | 说明 | 
| keywordList | 搜索关键字列表,最多支持5个,数组类型 | 
| messageTypeList | 指定搜索的消息类型集合,不传表示搜索支持的全部类型消息,数组类型 | 
| conversationId | 搜索“全部会话”还是搜索“指定的会话,不传“全部会话” | 
| searchTimePosition | 搜索的起始时间点。默认为0即代表从现在开始搜索 | 
| searchTimePeriod | 从起始时间点开始的过去时间范围,单位秒。默认为0即代表不限制时间范围 | 
| pageIndex | 用于分页展示查找结果,从零开始起步 | 
| pageSize | 每页结果数量:用于分页展示查找结果,如不希望分页可将其设置成 0 | 
置顶会话
txIm.pinConversation({"conversationId":"","isPinned":true},result=>{
                                                    console.log(result);
                                                })
| 字段 | 说明 | 
| conversationId | 会话id | 
| isPinned | 是否置顶 | 
创建转发消息
let messageOne = txIm.createTextMessage({textMsg:"test1"});
                let user = this.currentUser === this.user1 ? this.user2 : this.user1;
                txIm.sendMessage({"userId":user,"createMessageId":messageOne.createMessageId},result=>{
                    console.log(result);
                    let messageTwo = txIm.createForwardMessage({msgId:result.msgId});
                        txIm.sendMessage({"userId":user,"createMessageId":messageTwo.createMessageId},result=>{
                        console.log(result);
                    });
                });
创建合并消息
                var that = this;
                var messageIdList = [];
                let messageOne = txIm.createTextMessage({textMsg:"test1"});
                let user = this.currentUser === this.user1 ? this.user2 : this.user1;
                txIm.sendMessage({"userId":user,"createMessageId":messageOne.createMessageId},result=>{
                    console.log(result);
                    messageIdList.push(result.msgId);
                    let messageTwo = txIm.createTextMessage({textMsg:"test2"});
                    txIm.sendMessage({"userId":user,"createMessageId":messageTwo.createMessageId},result=>{
                        console.log(result);
                        messageIdList.push(result.msgId);
                        let messageMerger = txIm.createMergerMessage({"msgIdList":messageIdList,"abstractList":["testone","testtwo"],"title":"title","compatibleText":"compatibleText"});
                        txIm.sendMessage({"userId":user,"createMessageId":messageMerger.createMessageId},result=>{
                            console.log(result);
                            txIm.downloadMergerMessage({msgId:result.msgId},result=>{
                                console.log(result);
                            });
                        })
                    });
                })  
| 字段 | 说明 | 
| msgIdList | 消息id列表 | 
| title | 合并消息的来源 | 
| abstractList | 合并消息的摘要列表(最大支持 5 条摘要,每条摘要的最大长度不超过 100 个字符) | 
| compatibleText | 合并消息兼容文本,低版本 SDK 如果不支持合并消息,默认会收到一条文本消息,文本消息的内容为 compatibleText | 
下载合并消息
txIm.downloadMergerMessage({msgId:result.msgId},result=>{
                                console.log(result);
                            });
搜索朋友
txIm.searchFriends({
                    "keywordList":["userId"],
                },result=>{
                    console.log(result);
                })
| 字段 | 说明 | 
| keywordList | 搜索关键字列表,最多支持5个,数组类型 | 
| isSearchUserId | 设置是否搜索 userID bool类型 | 
| isSearchNickName | 是否设置搜索昵称 bool类型 | 
| isSearchRemark | 是否设置搜索备注 bool类型 | 
搜索群成员
txIm.searchGroupMembers({"keywordList":["groupMember"]},result=>{
                })
| 字段 | 说明 | 
| keywordList | 搜索关键字列表,最多支持5个,数组类型 | 
| groupIdList | 指定群 ID 列表,若不指定则搜索全部群中的群成员 | 
| isSearchMemberUserId | 设置是否搜索群成员 userID  bool类型 | 
| isSearchMemberNickName | 设置是否搜索群成员昵称 | 
| isSearchMemberRemark | 设置是否搜索群成员备注 | 
| isSearchMemberNameCard | 设置是否搜索群成员名片 | 
txIm.findMessages({"msgIdList":[""]},result=>{})
| 字段 | 说明 | 
| msgIdList | 消息id的字符串列表 | 
获取ios的token
let token = txIm.getPushToken();