信令管理

监听信令事件

说明:
请在调用 login 接口前调用此接口监听事件,避免漏掉 SDK 派发的事件。
接口
chat.addSignalingListener(options);
参数
参数 optionsObject 类型,包含的属性值如下:
名称
类型
描述
eventName
String
事件名称。所有的事件名称都存放在 TencentCloudChat.TSignaling 变量中,如需要查看可以使用 console.log(TencentCloudChat.TSignaling) 把所有的事件显示出来。
handler
Function
处理事件的方法,当事件触发时,会调用此handler进行处理。
context
any
期望 handler 执行时的上下文
返回值
Promise
示例
let onNewInvitationReceived = function(event) {
};
chat.addSignalingListener(TencentCloudChat.TSignaling.NEW_INVITATION_RECEIVED, onNewInvitationReceived);

移除监听信令事件

接口
chat.removeSignalingListener(options);
参数
参数 optionsObject 类型,包含的属性值如下:
名称
类型
描述
eventName
String
事件名称。所有的事件名称都存放在 TencentCloudChat.TSignaling 变量中,如需要查看可以使用 console.log(TencentCloudChat.TSignaling) 把所有的事件显示出来。
handler
Function
处理事件的方法,当事件触发时,会调用此handler进行处理。
context
any
期望 handler 执行时的上下文
返回值
Promise
示例
let onNewInvitationReceived = function(event) {
};
chat.removeSignalingListener(TencentCloudChat.TSignaling.NEW_INVITATION_RECEIVED, onNewInvitationReceived);

邀请某个人

接口
chat.invite(options);
参数
参数 optionsObject 类型,包含的属性值如下:
名称
类型
描述
userID
String
邀请的用户 ID
data
String
自定义数据
timeout
Number
超时时间,单位秒,如果设置为 0,SDK 不会做超时检测,也不会触发 onInvitationTimeout 回调
onlineUserOnly
Boolean
消息是否仅发送给在线用户的标识,默认值为 false;设置为 true,则消息既不存漫游,也不会计入未读,也不会离线推送给接收方, 并且 invite 操作也不会产生历史消息(针对该次invite 的后续 cancelacceptrejecttimeout操作也同样不会产生历史消息)。
offlinePushInfo
Object
离线推送配置
offlinePushInfo的描述如下:
名称
类型
描述
disablePush
Boolean
true 关闭离线推送;false 开启离线推送(默认)
disableVoipPush
Boolean
true 关闭 voip 推送(默认);false 开启 voip 推送(开启 voip 推送需要同时开启离线推送)
title
String
离线推送标题,该字段为 iOS 和 Android 共用
description
String
离线推送内容,该字段会覆盖消息实例的离线推送展示文本。若发送的是自定义消息,该 description 字段会覆盖 message.payload.description。如果 description 和 message.payload.description 字段都不填,接收方将收不到该自定义消息的离线推送
extension
String
离线推送透传内容
androidInfo
Object
Android 推送配置
apnsInfo
Object
iOS 推送配置
androidInfo的描述如下:
名称
类型
描述
sound
String

Android 离线推送声音设置。只支持华为、小米和谷歌。
小米手机在 Android 8.0 及以上版本必须设置 androidInfo.XiaoMiChannelID,请您参考:小米自定义铃声
谷歌手机 FCM 推送在 Android 8.0 及以上系统设置声音提示,必须设置 androidInfo.FCMChannelID。
自定义铃音需要设置声音文件路径。例如: androidInfo.sound = "shake.xxx"
对应 uniapp "nativeResources/android/res/raw/shake.xxx" 音频文件.
对应原生应用的 "/res/raw/shake.xxx" 音频文件。

XiaoMiChannelID
String
小米手机 MIUI 10 及以上的通知类别(Channel)适配字段。
OPPOChannelID
String
OPPO 手机 Android 8.0 及以上的 NotificationChannel 通知适配字段。
FCMChannelID
String
Google 手机 Android 8.0 及以上的通知渠道字段。
VIVOClassification
Number
VIVO 手机推送消息分类,0:运营消息,1:系统消息,默认为1。
VIVOCategory
String
VIVO 手机用来标识消息类型。
HuaWeiCategory
String
华为手机用来标识消息类型。
HuaWeiImage
String
华为推送通知栏通知图片 url,v3.4.1 起支持。
使用的协议必须是 HTTPS 协议,取值样例:https://example.com/image.png
图片文件须小于 512KB,规格建议为 40dp x 40dp,弧角大小为 8dp。超出建议规格的图片会存在图片压缩或图片显示不全的情况。图片格式建议使用 JPG/JPEG/PNG。

HonorImage
String
荣耀推送通知栏通知图片 url,v3.4.1 起支持。
使用的协议必须是 HTTPS 协议,取值样例:https://example.com/image.png
图标文件大小须小于 100KB,图标建议规格大小:160px x 160px,弧角大小为 32px,超出规格大小的图标会存在图片压缩或显示不全的情况。

GoogleImage
String
Google 推送通知栏通知图片 url,v3.4.1 起支持。
使用的协议必须是 HTTPS 协议,取值样例:https://example.com/image.png
图标文件大小须小于 1 MB,超出规格大小的图标会存在图片压缩或显示不全的情况。

apnsInfo 描述如下:
名称
类型
描述
sound
String
iOS 离线推送声音设置。
当 apnsInfo.sound = TencentCloudChat.TYPES.IOS_OFFLINE_PUSH_NO_SOUND,表示接收时不会播放声音。
当 apnsInfo.sound = TencentCloudChat.TYPES.IOS_OFFLINE_PUSH_DEFAULT_SOUND,表示接收时播放系统声音。
自定义铃音需要设置声音文件路径。例如: apnsInfo.sound = "shake.xxx"
对应 uniapp "nativeResources/ios/Resources/shake.xxx" 文件,uniapp 必须为正式包。
对应原生 Xcode 工程中的 "shake.xxx" 音频文件。

ignoreIOSBadge
Boolean
离线推送忽略 badge 计数(仅对 iOS 生效),默认为 false,设置为 true 时,在 iOS 接收端,这条消息不会使 APP 的应用图标未读计数增加。
disableVoipPush
Boolean
true 关闭 voip 推送(默认);false 开启 voip 推送(开启 voip 推送需要同时开启离线推送)
image
String
标识 APNs 通知栏通知图片地址,当客户端拿到该字段时,可以通过下载图片资源的方式将图片展示在弹窗上,v3.4.1 起支持。
使用的协议必须是 HTTPS 协议,取值样例:https://example.com/image.png
支持 JPEG、GIF、PNG,大小不超过 10 MB
需要在 IM 控制台打开 mutable-content 属性,支持 iOS 10 Service Extension 特性
资源的 key 值是 "image"

返回值
Promise
示例
// 邀请某个人
let promise = chat.invite({
userID: 'user1',
data: ''
});
promise.then(function(imResponse) { // 发送邀请信令成功
console.warn('invite success:', imResponse)
}).catch(function(imError) {
console.warn('invite error:', imError);
});
// 邀请某个人, 设置不更新会话 unreadCount 和 lastMessage
let promise = chat.invite({
userID: 'user1',
// excludeFromHistoryMessage: true,表示此信令消息不更新会话 unreadCount 和 lastMessage
data: JSON.stringify({ excludeFromHistoryMessage: true }),
});
promise.then(function(imResponse) { // 发送邀请信令成功
console.warn('invite success:', imResponse)
}).catch(function(imError) {
console.warn('invite error:', imError);
});
// 邀请某个人, 并设置 30s 超时, 30s 内没有任何操作,邀请方会收到 TencentCloudChat.TSignaling.INVITATION_TIMEOUT 事件。
let promise = chat.invite({
userID: 'user1',
data: '',
timeout: 30 // 设置 30s 超时
});
promise.then(function(imResponse) { // 发送邀请信令成功
console.warn('invite success:', imResponse)
}).catch(function(imError) {
console.warn('invite error:', imError);
});
// 邀请某个人, 设置 30s 超时, 相关信令不存入漫游, 且不会进行离线推送
let promise = chat.invite({
userID: 'user1',
data: '',
timeout: 30, // 设置 30s 超时
onlineUserOnly: true // 设置相关信令不存入漫游, 且不会进行离线推送
});
promise.then(function(imResponse) { // 发送邀请信令成功
console.warn('invite success:', imResponse)
}).catch(function(imError) {
console.warn('invite error:', imError);
});

邀请群内的某些人

接口
chat.inviteInGroup(options);
参数
参数 optionsObject 类型,包含的属性值如下:
名称
类型
描述
groupID
String
群组 ID
inviteeList
Array.<String>
被邀请人列表
data
String
自定义数据
timeout
Number
超时时间,单位秒,如果设置为 0,SDK 不会做超时检测,也不会触发 onInvitationTimeout 回调
onlineUserOnly
Boolean
消息是否仅发送给在线用户的标识,默认值为 false;设置为 true,则消息既不存漫游,也不会计入未读,也不会离线推送给接收方, 并且 invite 操作也不会产生历史消息(针对该次invite 的后续 cancelacceptrejecttimeout操作也同样不会产生历史消息)。
offlinePushInfo
Object
离线推送配置
返回值
Promise
示例
// 邀请群内的某些人
let promise = chat.inviteInGroup({
groupID: 'AV1',
inviteeList: ['user1', 'user2'],
data: '',
});
promise.then(function(imResponse) { // 发送邀请信令成功
console.warn('inviteInGroup success:', imResponse)
}).catch(function(imError) {
console.warn('inviteInGroup error:', imError);
});

邀请发起者取消邀请

接口
chat.cancel(options);
参数
参数 optionsObject 类型,包含的属性值如下:
名称
类型
描述
inviteID
String
邀请信息的 ID
data
String
自定义数据
返回值
Promise
示例
// 邀请发起者取消邀请
let promise = chat.cancel({
inviteID: '38897dbf-ecd4-4b59-a132-bc31529a2b18',
data: '',
})
promise.then(function(imResponse) { // 取消邀请成功
console.log('cancel OK', imResponse);
}).catch(function(error) {
console.warn('cancel failed:', error); // 取消邀请失败
});

被邀请人接受邀请

接口
chat.accept(options);
参数
参数 optionsObject 类型,包含的属性值如下:
名称
类型
描述
inviteID
String
邀请信息的 ID
data
String
自定义数据
返回值
Promise
示例
// 被邀请人接受邀请
let promise = chat.accept({
inviteID: '38897dbf-ecd4-4b59-a132-bc31529a2b18',
data: '',
})
promise.then(function(imResponse) { // 被邀请人接受邀请成功
console.log('accept OK', imResponse);
}).catch(function(error) {
console.warn('accept failed:', error); // 被邀请人接受邀请失败
});

被邀请人拒绝邀请

接口
chat.reject(options);
参数
参数 optionsObject 类型,包含的属性值如下:
名称
类型
描述
inviteID
String
邀请信息的 ID
data
String
自定义数据
返回值
Promise
示例
// 被邀请人拒绝邀请
let promise = chat.reject({
inviteID: '38897dbf-ecd4-4b59-a132-bc31529a2b18',
data: '',
})
promise.then(function(imResponse) { // 被邀请人拒绝邀请成功
console.log('reject OK', imResponse);
}).catch(function(error) {
console.warn('reject failed:', error); // 被邀请人拒绝邀请失败
});

获取信令信息

接口
chat.getSignalingInfo(message);
参数
名称
类型
描述
message
Message
消息对象
返回值
Message | Null
示例
// 获取信令信息
let signaling = chat.getSignalingInfo(message);
console.log('signaling info', signaling); // signaling 为 null 时,表示该条消息为普通消息,不是信令消息

修改邀请信令

说明:
支持修改邀请信令的自定义字段 data。当邀请信令的 onlineUserOnly = true 时,不支持修改。
接口
chat.modifyInvitation(options);
参数
参数 optionsObject 类型,包含的属性值如下:
名称
类型
描述
inviteID
String
邀请信息的 ID
data
String
自定义数据
返回值
Promise
示例
// 修改邀请信令
let promise = chat.modifyInvitation({
inviteID:'38897dbf-ecd4-4b59-a132-bc31529a2b18',
data: 'xxxx'
});
promise.then(function(imResponse) { // 修改发送邀请信令成功
console.log('modifyInvitation OK', imResponse);
}).catch(function(error) {
console.warn('modifyInvitation failed:', error); // 修改邀请信令失败
});