更新记录
1.7.3(2024-04-07)
修复安卓音视频通话稳定性问题
1.7.2(2023-09-17)
修复部分机型ios拉流黑屏问题
1.7.1(2023-08-18)
修复im消息有时候收不到的问题
查看更多
平台兼容性
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();