更新记录
1.6.3(2024-04-19)
新增ios禁用成员的字段
1.6.2(2024-04-07)
im拉去历史消息优化
1.6.1(2023-07-17)
修复部分情况下消息丢失问题
查看更多
平台兼容性
Android |
Android CPU类型 |
iOS |
适用版本区间:4.4 - 11.0 |
armeabi-v7a:支持,arm64-v8a:支持,x86:支持 |
适用版本区间:9 - 16 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在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-TencentIM-Plus组件
TX-TencentIM-Plus致力于让用户轻松使用im的各种功能,插件永久维护,欢迎提需求👏👏👏
快速接入方法
加载模块
const txIm = uni.requireNativePlugin('TX-TencentIM-Plus');
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, ///< 输出 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);
获取用户状态(看自己购买的套餐是否支持)
txIm.getUserStatus({userIdList:userIdArr},result=>{
console.log(result);
});
订阅用户状态(看自己购买的套餐是否支持)
txIm.subscribeUserStatus({userIdList:userIdArr},result=>{
console.log(result);
});
取消订阅用户状态(看自己购买的套餐是否支持)
txIm.unsubscribeUserStatus({userIdList:userIdArr},result=>{
console.log(result);
});
销毁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);
})
返回字段 |
说明 |
userId |
用户id |
groupId |
群id |
friendRemark |
消息发送者好友备注 |
nameCard |
发送者的名片 |
cloudCustomData |
消息自定义数据(云端保存,程序卸载重装后还能拉取到) |
groupAtUserList |
群消息中被 @ 的用户 userId 列表 |
sender |
消息发送者 |
userName |
消息发送者昵称 |
userAvatar |
用户头像 |
msgId |
消息id |
elemType |
消息类型见下 |
status |
消息发送状态 1, ///< 消息发送中 2, ///< 消息发送成功 3, ///< 消息发送失败 4, ///< 消息被删除 6, ///< 被撤销的消息 |
isSelf |
消息发送者是否是自己 |
isPeerRead |
消息对方是否已读 |
isRead |
消息自己是否已读 |
time |
消息时间 |
textElem |
文本消息 |
customElem |
自定义消息 |
imageElem |
图片消息 |
soundElem |
声音消息 |
videoElem |
视频消息 |
fileElem |
文件消息 |
locationElem |
位置消息 |
faceElem |
表情消息 |
groupTipsElem |
群tips消息(type:1主动入群 type:2 被邀请入群 type:3 退出群 type:4 踢出群 type:5 设置管理员 type:6 取消管理员 type:7 群资料变更 type:8 群成员资料变更) |
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.getTotalUnreadMessageCount(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} 自定义字段 |
selfSignature |
签名 |
role |
用户角色 |
level |
用户等级 |
设置会话草稿
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","msg":""},result=>{
console.log(result);
})
字段 |
说明 |
groupId |
群id |
msg |
加入信息 |
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.modifyMessage({"msgId":"cloudCustomData":"",},result=>{
console.log(result);
})
字段 |
说明 |
msgId |
消息id |
localCustomData |
消息自定义数据 |
localCustomInt |
消息自定义数据 |
cloudCustomData |
消息自定义数据 |
text |
文本消息内容 |
data |
自定义消息内容 或者表情消息的数据 |
desc |
自定义消息描述 或者本地位置消息内容 |
extension |
自定义消息扩展内容 |
longitude |
位置信息经度 |
latitude |
位置信息纬度 |
index |
表情索引 |
发送消息已读回执
txIm.sendMessageReadReceipts({"msgIdList":[""]},result=>{
console.log(result);
})
获取消息已读回执
txIm.getMessageReadReceipts({"msgIdList":[""]},result=>{
console.log(result);
})
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.addSignalingListener(result=>{
console.log(result);
});
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.removeSignalingListener();
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 |
失败回调 |
获取image的url
txIm.getImageUrl({"msgId":msg.msgId},result=>{
console.log(result);
})
获取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();
设置自己的状态
txIm.setSelfStatus({"customStatus":""},result=>{})
字段 |
说明 |
customStatus |
用户自定义状态 |
标记会话
txIm.markConversation({"conversationIdList":[""],"markType":0,"enableMark":true},result=>{})
字段 |
说明 |
conversationIdList |
会话的id字符串列表 |
markType |
1 ///< 会话标星 2 ///< 会话标记未读(重要会话)4 ///< 会话折叠 8 ///< 会话隐藏 |
enableMark |
是否标记 |
根据条件获取会话列表
txIm.getConversationListByFilter({"conversationType":0,"markType":0,"conversationGroup":"",nextSeq:0,count:10},result=>{})
字段 |
说明 |
nextSeq |
分页拉取游标,第一次默认取传 0 |
count |
分页拉取的个数,一次分页拉取不宜太多,会影响拉取的速度,建议每次拉取 100 个会话 |
conversationType |
0 ///< 未知 1 ///< 单聊 2 ///< 群聊 |
markType |
1 ///< 会话标星 2 ///< 会话标记未读(重要会话)4 ///< 会话折叠 8 ///< 会话隐藏 |
conversationGroup |
会话分组名称 |