tencent cloud

即时通信 IM

动态与公告
产品动态
公告
产品简介
产品概述
基本概念
应用场景
功能介绍
账号系统
用户资料与关系链
消息管理
群组相关
公众号系统
音视频通话 Call
使用限制
购买指南
计费概述
价格说明
购买指引
续费指引
停服说明
退费说明
开发指引
Demo 专区
开通服务
体验 Demo
快速跑通
下载中心
SDK & Demo 源码
更新日志
聊天互动(含 UI)
TUIKit 组件介绍
快速开始
全功能接入
单功能接入
AI 集成
构建基础界面
更多特性
定义外观
国际化界面语言
推送服务(Push)
服务概述
名词解释
开通服务
快速跑通
厂商通道
数据统计
排查工具
客户端 API
服务端 API
推送回调
高级功能
更新日志
错误码
常见问题
智能客服
功能概述
快速入门
集成指引
管理员操作手册
客服操作手册
更多实践
直播间搭建
AI 聊天机器人方案
超大娱乐协作社群
Discord 实现指南
游戏内集成 Chat 指南
类 WhatsApp Channel 搭建方案
发送红包
Chat 应对防火墙限制相关
无 UI 集成
快速开始
集成 SDK
初始化
登录登出
消息相关
会话相关
群组相关
社群话题
用户管理
离线推送
云端搜索
本地搜索
公众号
客户端 API
JavaScript
Android
iOS & macOS
Swift
Flutter
Electron
Unity
React Native
C 接口
C++
服务端 API
生成 UserSig
REST API
第三方回调
控制台指南
新版控制台介绍
创建并升级应用
基本配置
功能配置
账号管理
群组管理
公众号管理
回调配置
用量统计
资源包查看指南
实时监控
开发辅助工具
访问管理
高级功能
常见问题
uni-app 常见问题
购买相关问题
SDK 相关问题
账号鉴权相关问题
用户资料与关系链相关问题
消息相关问题
群组相关问题
直播群相关问题
昵称头像相关问题
协议与认证
服务等级协议
安全合规认证
IM 政策
隐私政策
数据隐私和安全协议
平滑迁移方案
平滑迁移完整版
平滑迁移简化版
错误码
联系我们

React Native

PDF
聚焦模式
字号
最后更新时间: 2025-03-03 14:59:14

创建消息

创建文本消息

创建文本消息的接口,此接口返回一个消息实例,可以在需要发送文本消息时调用 发送消息 接口发送消息实例。
接口
chat.createTextMessage(options);
参数
参数 optionsObject类型,包含的属性值如下:
参数
类型
说明
to
String
消息接收方的 userID 或 groupID
conversationType
String
会话类型,取值TencentCloudChat.TYPES.CONV_C2C(端到端会话)或TencentCloudChat.TYPES.CONV_GROUP(群组会话)
priority
String
消息优先级,如果群组内消息超过频率限制,后端会优先投递高优先级消息。支持的枚举值:
TencentCloudChat.TYPES.MSG_PRIORITY_HIGH
TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL (default)
TencentCloudChat.TYPES.MSG_PRIORITY_LOW
TencentCloudChat.TYPES.MSG_PRIORITY_LOWEST
payload
Object
消息内容的容器
cloudCustomData
String
消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
receiverList
Array | undefined
定向接收消息的群成员列表(社群和直播群不支持)
isSupportExtension
Boolean
是否支持消息扩展,true 支持 false 不支持(需要您购买专业版、专业版plus或企业版套餐)
payload的描述如下:
参数
类型
说明
text
String
消息文本内容
返回值
Message
示例
// 发送文本消息,Web 端与小程序端相同
// 1. 创建消息实例,接口返回的实例可以上屏
let message = chat.createTextMessage({
to: 'user1',
conversationType: TencentCloudChat.TYPES.CONV_C2C,
// 消息优先级,用于群聊。如果某个群的消息超过了频率限制,后台会优先下发高优先级的消息
// priority: TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL,
payload: {
text: 'Hello world!'
},
// 如果您发消息需要已读回执,需购买旗舰版套餐,并且创建消息时将 needReadReceipt 设置为 true
needReadReceipt: true
// 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
// cloudCustomData: 'your cloud custom data'
});
// 2. 发送消息
let promise = chat.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
// 发送群定向消息
// 注意:群定向消息不计入会话未读,receiverList 最大支持50个接收者。
let message = chat.createTextMessage({
to: 'group1',
conversationType: TencentCloudChat.TYPES.CONV_GROUP,
payload: {
text: 'Hello world!'
},
// 如果您需要发群定向消息,需购买旗舰版套餐,并且创建消息时通过 receiverList 指定消息接收者
receiverList: ['user0', 'user1']
});
// 发送消息
let promise = chat.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});

创建@消息

创建可以附带 @ 提醒功能的文本消息的接口,此接口返回一个消息实例,可以在需要发送文本消息时调用 发送消息 接口发送消息实例。
说明:
1. 此接口仅用于群聊,且社群和社群下的话题不支持 @ALL。
2. 创建群 @ 消息不支持指定消息接收者。
接口
chat.createTextAtMessage(options);
参数
参数 optionsObject类型,包含的属性值如下:
参数
类型
说明
to
String
消息接收方的 userID 或 groupID
conversationType
String
会话类型,取值TencentCloudChat.TYPES.CONV_C2C(端到端会话)或TencentCloudChat.TYPES.CONV_GROUP(群组会话)
priority
String
消息优先级,如果群组内消息超过频率限制,后端会优先投递高优先级消息。支持的枚举值:
TencentCloudChat.TYPES.MSG_PRIORITY_HIGH
TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL (default)
TencentCloudChat.TYPES.MSG_PRIORITY_LOW
TencentCloudChat.TYPES.MSG_PRIORITY_LOWEST
payload
Object
消息内容的容器
cloudCustomData
String
消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
payload的描述如下:
参数
类型
说明
text
String
消息文本内容
atUserList
Array
需要 @ 的用户列表,如果需要 @ALL,请传入 TencentCloudChat.TYPES.MSG_AT_ALL 。 举个例子,假设该条文本消息希望 @ 提醒 denny 和 lucy 两个用户,同时又希望 @ 所有人,atUserList 传 ['denny', 'lucy', TencentCloudChat.TYPES.MSG_AT_ALL]
返回值
Message
示例
// 发送文本消息,Web 端与小程序端相同
// 1. 创建消息实例,接口返回的实例可以上屏
let message = chat.createTextAtMessage({
to: 'group1',
conversationType: TencentCloudChat.TYPES.CONV_GROUP,
// 消息优先级,用于群聊
// priority: TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL,
payload: {
text: '@denny @lucy @所有人 今晚聚餐,收到的请回复1',
// 'denny' 'lucy' 都是 userID,而非昵称
atUserList: ['denny', 'lucy', TencentCloudChat.TYPES.MSG_AT_ALL]
},
// 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
// cloudCustomData: 'your cloud custom data'
});
// 2. 发送消息
let promise = chat.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});

创建图片消息

创建图片消息的接口,此接口返回一个消息实例,可以在需要发送图片消息时调用 发送消息 接口发送消息实例。 React Native 发送图片消息您需要集成 react-native-image-picker
npm install react-native-image-picker --save
接口
chat.createImageMessage(options);
参数
参数 optionsObject 类型,包含的属性值如下表所示:
参数
类型
说明
to
String
消息的接收方
conversationType
String
会话类型,取值 TencentCloudChat.TYPES.CONV_C2CTencentCloudChat.TYPES.CONV_GROUP
priority
String
消息优先级,如果群组内消息超过频率限制,后端会优先投递高优先级消息。支持的枚举值:
TencentCloudChat.TYPES.MSG_PRIORITY_HIGH
TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL (default)
TencentCloudChat.TYPES.MSG_PRIORITY_LOW
TencentCloudChat.TYPES.MSG_PRIORITY_LOWEST
payload
Object
消息内容的容器
onProgress
function
获取上传进度的回调函数
cloudCustomData
String
消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
payload的描述如下:
参数
类型
说明
file
HTMLInputElement | Object | File
用于选择图片的 DOM 节点(Web)或者 File 对象(Web)
wx.chooseImage 接口的 success 回调参数。SDK 会读取其中的数据并上传图片
返回值
Message
示例
import {launchImageLibrary} from 'react-native-image-picker';
// 1. 选择图片
launchImageLibrary({
mediaType: 'photo',
selectionLimit: 1,
}).then((result) => {
const file = result.assets[0];
// 2. 创建消息实例,接口返回的实例可以上屏
let message = chat.createImageMessage({
to: 'user1',
conversationType: TencentCloudChat.TYPES.CONV_C2C,
payload: { file: file },
// React Native 不支持上传进度回调
// onProgress: function(event) { console.log('file uploading:', event) }
});
// 3. 发送图片
let promise = chat.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
});
import {launchCamera} from 'react-native-image-picker';
// 1. 拍照
launchCamera({
mediaType: 'photo',
cameraType: 'back',
}).then((result) => {
const file = result.assets[0];
// 2. 创建消息实例,接口返回的实例可以上屏
let message = chat.createImageMessage({
to: 'user1',
conversationType: TencentCloudChat.TYPES.CONV_C2C,
payload: { file: file },
// React Native 不支持上传进度回调
// onProgress: function(event) { console.log('file uploading:', event) }
});
// 3. 发送图片
let promise = chat.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
});

创建音频消息

创建音频消息实例的接口,此接口返回一个消息实例,可以在需要发送音频消息时调用 发送消息 接口发送消息。React Native 发送音频消息您需要集成 react-native-audio-recorder-player
npm install react-native-audio-recorder-player --save
接口
chat.createAudioMessage(options);
参数
参数 optionsObject类型,包含的属性值如下:
参数
类型
说明
to
String
消息的接收方
conversationType
String
会话类型,取值 TencentCloudChat.TYPES.CONV_GROUPTencentCloudChat.TYPES.CONV_GROUP
priority
String
消息优先级,如果群组内消息超过频率限制,后端会优先投递高优先级消息。支持的枚举值:
TencentCloudChat.TYPES.MSG_PRIORITY_HIGH
TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL (default)
TencentCloudChat.TYPES.MSG_PRIORITY_LOW
TencentCloudChat.TYPES.MSG_PRIORITY_LOWEST
payload
Object
消息内容的容器
cloudCustomData
String
消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
payload的描述如下:
参数
类型
说明
file
Object
录音后得到的文件信息
返回值
Message
示例
import AudioRecorderPlayer, {AVEncodingOption} from 'react-native-audio-recorder-player';
// 记录录音时长,单位: ms
let duration = 0;
// 记录录音文件路径
let uri = '';

// 1. 开始录音
const onStartRecord = async () => {
await audioRecorderPlayer.startRecorder('test.aac',{
VFormatIDKeyIOS: AVEncodingOption.aac,
});
audioRecorderPlayer.addRecordBackListener((e: any) => {
duration = e.currentPosition;
});
};
// 2. 结束录音
const onStopRecord = async () => {
uri = await audioRecorderPlayer.stopRecorder();
audioRecorderPlayer.removeRecordBackListener();
};
// 3. 发送语音
const file = {
uri: uri,
duration: duration,
};
let message = chat.createAudioMessage({
to: 'user1',
conversationType: 'C2C',
payload: {
file: file,
},
// React Native 不支持上传进度回调
// onProgress: function(event) { console.log('file uploading:', event) }
});
let promise = chat.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});

创建视频消息

创建视频消息实例的接口,此接口返回一个消息实例,可以在需要发送视频消息时调用 发送消息 接口发送消息。React Native 发送视频消息您需要集成 react-native-image-picker
npm install react-native-image-picker --save
接口
chat.createVideoMessage(options);
参数
参数 optionsObject类型,包含的属性值如下:
参数
类型
说明
to
String
消息的接收方
conversationType
String
会话类型,取值TencentCloudChat.TYPES.CONV_GROUP
TencentCloudChat.TYPES.CONV_GROUP
priority
String
消息优先级,如果群组内消息超过频率限制,后端会优先投递高优先级消息。支持的枚举值:
TencentCloudChat.TYPES.MSG_PRIORITY_HIGH
TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL (default)
TencentCloudChat.TYPES.MSG_PRIORITY_LOW
TencentCloudChat.TYPES.MSG_PRIORITY_LOWEST
payload
Object
消息内容的容器
cloudCustomData
String
消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
payload 的描述如下:
参数
类型
说明
file
HTMLInputElement | File | Object
自定义消息的数据字段
返回值
Message
示例
import {launchImageLibrary} from 'react-native-image-picker';
// 1. 选择视频
launchImageLibrary({
mediaType: 'video',
selectionLimit: 1,
}).then((result) => {
const file = result.assets[0];
// 2. 创建消息实例,接口返回的实例可以上屏
let message = chat.createVideoMessage({
to: 'user1',
conversationType: TencentCloudChat.TYPES.CONV_C2C,
payload: { file: file },
// React Native 不支持上传进度回调
// onProgress: function(event) { console.log('file uploading:', event) }
});
// 3. 发送视频
let promise = chat.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
});
import {launchCamera} from 'react-native-image-picker';
// 1. 拍摄视频
launchCamera({
mediaType: 'video',
cameraType: 'back',
}).then((result) => {
const file = result.assets[0];
// 2. 创建消息实例,接口返回的实例可以上屏
let message = chat.createVideoMessage({
to: 'user1',
conversationType: TencentCloudChat.TYPES.CONV_C2C,
payload: { file: file },
// React Native 不支持上传进度回调
// onProgress: function(event) { console.log('file uploading:', event) }
});
// 3. 发送视频
let promise = chat.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
});

创建自定义消息

创建自定义消息实例的接口,此接口返回一个消息实例,可以在需要发送自定义消息时调用 发送消息 接口发送消息实例。当 SDK 提供的能力不能满足您的需求时,可以使用自定义消息进行个性化定制。
接口
chat.createCustomMessage(options);
参数
参数 optionsObject 类型,包含的属性值如下:
参数
类型
说明
to
String
消息接收方的 userID 或 groupID
conversationType
String
会话类型,取值TencentCloudChat.TYPES.CONV_GROUP
TencentCloudChat.TYPES.CONV_GROUP
priority
String
消息优先级,如果群组内消息超过频率限制,后端会优先投递高优先级消息。支持的枚举值:
TencentCloudChat.TYPES.MSG_PRIORITY_HIGH
TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL (default)
TencentCloudChat.TYPES.MSG_PRIORITY_LOW
TencentCloudChat.TYPES.MSG_PRIORITY_LOWEST
payload
Object
消息内容的容器
cloudCustomData
String
消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
payload 的描述如下:
参数
类型
说明
data
String
自定义消息的数据字段
description
String
自定义消息的说明字段
extension
String
自定义消息的扩展字段
返回值
Message
示例
// 示例:利用自定义消息实现投骰子功能
// 1. 定义随机函数
function random(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
// 2. 创建消息实例,接口返回的实例可以上屏
let message = chat.createCustomMessage({
to: 'user1',
conversationType: TencentCloudChat.TYPES.CONV_C2C,
// 消息优先级,用于群聊
// priority: TencentCloudChat.TYPES.MSG_PRIORITY_HIGH,
payload: {
data: 'dice', // 用于标识该消息是骰子类型消息
description: String(random(1,6)), // 获取骰子点数
extension: ''
}
});
// 3. 发送消息
let promise = chat.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});

创建表情消息

创建表情消息实例的接口,此接口返回一个消息实例,可以在需要发送表情消息时调用 发送消息 接口发送消息。
接口
chat.createFaceMessage(options);
参数
参数 optionsObject类型,包含的属性值如下:
参数
类型
说明
to
String
消息接收方的 userID 或 groupID
conversationType
String
会话类型,取值 TencentCloudChat.TYPES.CONV_C2CTencentCloudChat.TYPES.CONV_GROUP
priority
String
消息优先级,如果群组内消息超过频率限制,后端会优先投递高优先级消息。支持的枚举值:
TencentCloudChat.TYPES.MSG_PRIORITY_HIGH
TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL (default)
TencentCloudChat.TYPES.MSG_PRIORITY_LOW
TencentCloudChat.TYPES.MSG_PRIORITY_LOWEST
payload
Object
消息内容的容器
cloudCustomData
String
消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
payload的描述如下:
参数
类型
说明
index
Number
表情索引,用户自定义
data
String
额外数据
返回值
Message
示例
// 发送表情消息,Web端与小程序端相同。
// 1. 创建消息实例,接口返回的实例可以上屏
let message = chat.createFaceMessage({
to: 'user1',
conversationType: TencentCloudChat.TYPES.CONV_C2C,
// 消息优先级,用于群聊
// priority: TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL,
payload: {
index: 1, // Number 表情索引,用户自定义
data: 'tt00' // String 额外数据
},
// 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
// cloudCustomData: 'your cloud custom data'
});
// 2. 发送消息
let promise = chat.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});

创建文件消息

创建文件消息的接口,此接口返回一个消息实例,可以在需要发送文件消息时调用 发送消息 接口发送消息实例。React Native 发送文件消息您需要集成 react-native-document-picker
npm install react-native-document-picker --save
接口
chat.createFileMessage(options);
参数
参数 optionsObject类型,包含的属性值如下:
参数
类型
说明
to
String
消息接收方的 userID 或 groupID
conversationType
String
会话类型,取值 TencentCloudChat.TYPES.CONV_C2CTencentCloudChat.TYPES.CONV_GROUP
priority
String
消息优先级,如果群组内消息超过频率限制,后端会优先投递高优先级消息。支持的枚举值:
TencentCloudChat.TYPES.MSG_PRIORITY_HIGH
TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL (default)
TencentCloudChat.TYPES.MSG_PRIORITY_LOW
TencentCloudChat.TYPES.MSG_PRIORITY_LOWEST
payload
Object
消息内容的容器
onProgress
function
获取上传进度的回调函数
cloudCustomData
String
消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
payload的描述如下:
参数
类型
说明
file
HTMLInputElement | File | Object
用于选择文件的 DOM 节点(Web)或者 File 对象(Web)或者 Object(uni.chooseFile 接口的 success 回调参数),SDK 会读取其中的数据并上传文件
返回值
Message
示例
import DocumentPicker from 'react-native-document-picker';
// 1. 选择文件
DocumentPicker.pick({
type: [DocumentPicker.types.allFiles],
}).then((result) => {
const file = result[0];
// 2. 创建消息实例,接口返回的实例可以上屏
let message = chat.createFileMessage({
to: 'user1',
conversationType: TencentCloudChat.TYPES.CONV_C2C,
payload: { file: file },
// React Native 不支持上传进度回调
// onProgress: function(event) { console.log('file uploading:', event) }
});
// 3. 发送文件
let promise = chat.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});
});

创建地理位置消息

创建地理位置消息的接口,此接口返回一个消息实例,可以在需要发送地理位置消息时调用 发送消息 接口发送消息。
接口
chat.createLocationMessage(options);
参数
参数 optionsObject类型,包含的属性值如下:
参数
类型
说明
to
String
消息接收方的 userID 或 groupID
conversationType
String
会话类型,取值 TencentCloudChat.TYPES.CONV_C2CTencentCloudChat.TYPES.TYPES.CONV_GROUP
priority
String
消息优先级,如果群组内消息超过频率限制,后端会优先投递高优先级消息。支持的枚举值:
TencentCloudChat.TYPES.MSG_PRIORITY_HIGH
TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL (default)
TencentCloudChat.TYPES.MSG_PRIORITY_LOW
TencentCloudChat.TYPES.MSG_PRIORITY_LOWEST
payload
Object
消息内容的容器
cloudCustomData
String
消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
payload 的描述如下:
参数
类型
说明
description
String
地理位置描述信息
longitude
Number
经度
latitude
Number
纬度
返回值
Message
示例
// 发送地理位置消息,Web 端与小程序端相同
// 1. 创建消息实例,接口返回的实例可以上屏
let message = chat.createLocationMessage({
to: 'user1',
conversationType: TencentCloudChat.TYPES.CONV_C2C,
// 消息优先级,用于群聊
// priority: TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL,
payload: {
description: '深圳市深南大道10000号腾讯大厦',
longitude: 113.941079, // 经度
latitude: 22.546103 // 纬度
}
});
// 2. 发送消息
let promise = chat.sendMessage(message);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});

创建合并消息

创建合并消息的接口,此接口返回一个消息实例,可以在需要发送合并消息时调用 发送消息 接口发送消息。
说明:
1. 不支持合并已发送失败的消息,如果消息列表内传入了已发送失败的消息,则创建消息接口会报错。
接口
chat.createMergerMessage(options);
参数
参数 optionsObject类型,包含的属性值如下:
参数
类型
说明
to
String
消息接收方的 userID 或 groupID
conversationType
String
会话类型,取值 TencentCloudChat.TYPES.CONV_C2CTencentCloudChat.TYPES.CONV_GROUP
priority
String
消息优先级,如果群组内消息超过频率限制,后端会优先投递高优先级消息。支持的枚举值:
TencentCloudChat.TYPES.MSG_PRIORITY_HIGH
TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL (default)
TencentCloudChat.TYPES.MSG_PRIORITY_LOW
TencentCloudChat.TYPES.MSG_PRIORITY_LOWEST
payload
Object
消息内容的容器
cloudCustomData
String
消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
payload的描述如下:
参数
类型
说明
messageList
Array
合并的消息列表
title
String
合并的标题,例如:"大湾区前端人才中心的聊天记录"
abstractList
String
摘要列表,不同的消息类型可以设置不同的摘要信息,例如:文本消息可以设置为:sender: text,图片消息可以设置为:sender: [图片],文件消息可以设置为:sender: [文件]
compatibleText
String
兼容文本,低版本 SDK 如果不支持合并消息,默认会收到一条文本消息,文本消息的内容为 ${compatibleText},必填
返回值
Message
示例
// 1. 将群聊消息转发到 c2c 会话
// message1 message2 message3 是群聊消息
let mergerMessage = chat.createMergerMessage({
to: 'user1',
conversationType: TencentCloudChat.TYPES.CONV_C2C,
payload: {
messageList: [message1, message2, message3],
title: '大湾区前端人才中心的聊天记录',
abstractList: ['allen: 666', 'iris: [图片]', 'linda: [文件]'],
compatibleText: '请升级 Chat SDK 到v2.10.1或更高版本查看此消息'
},
// 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
// cloudCustomData: 'your cloud custom data'
});

// 2. 发送消息
let promise = chat.sendMessage(mergerMessage);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});

下载合并消息

如果发送方发送的合并消息较大,SDK 会将此消息存储到云端,消息接收方查看消息时,需要先把消息从云端下载到本地。
接口
chat.downloadMergerMessage(message);
参数
参数
类型
说明
message
Message
消息实例
返回值
Promise
示例
// downloadKey 存在说明收到的合并消息存储在云端,需要先下载
if (message.type === TencentCloudChat.TYPES.MSG_MERGER && message.payload.downloadKey !== '') {
let promise = chat.downloadMergerMessage(message);
promise.then(function(imResponse) {
// 下载成功后,SDK会更新 message.payload.messageList 等信息
console.log(imResponse.data);
}).catch(function(imError) {
// 下载失败
console.warn('downloadMergerMessage error:', imError);
});
}

逐条转发消息

如果您需要转发单条消息,可以先通过 createForwardMessage 接口创建一条和原消息内容完全一样的转发消息,再调用 sendMessage 接口把转发消息发送出去。
说明:
1. 支持单条转发和逐条转发。
接口
chat.createForwardMessage(message);
参数
参数
类型
说明
message
Message
消息实例
示例
let forwardMessage = chat.createForwardMessage({
to: 'user1',
conversationType: TencentCloudChat.TYPES.CONV_C2C,
// 消息优先级,用于群聊
// priority: TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL,
payload: message, // 消息实例,已收到的或自己已发出的消息
// 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
// cloudCustomData: 'your cloud custom data'
});
// 2. 发送消息
let promise = chat.sendMessage(forwardMessage);
promise.then(function(imResponse) {
// 发送成功
console.log(imResponse);
}).catch(function(imError) {
// 发送失败
console.warn('sendMessage error:', imError);
});

发送消息

发送消息的接口,需先调用下列的创建消息实例的接口获取消息实例后,再调用该接口发送消息实例。
说明:
1. 调用该接口发送消息实例,需要 sdk 处于 ready 状态,否则将无法发送消息实例。sdk 状态,可通过监听以下事件得到:TencentCloudChat.EVENT.SDK_READY - sdk 处于 ready 状态时触发。
2. TencentCloudChat.EVENT.SDK_NOT_READY - sdk 处于 not ready 状态时触发。
3. 接收推送的单聊、群聊、群提示、群系统通知的新消息,需监听事件 TencentCloudChat.EVENT.MESSAGE_RECEIVED
4. 本实例发送的消息,不会触发事件 TencentCloudChat.EVENT.MESSAGE_RECEIVED。同账号从其他端(或通过 REST API)发送的消息,会触发事件 TencentCloudChat.EVENT.MESSAGE_RECEIVED
5. 离线推送仅适用于终端(Android 或 iOS),Web 不支持。
6. onlineUserOnly 和 messageControlInfo 不能同时使用。
7. 支持普通社群和话题消息不计未读。
8. 向【系统会话】发消息,SDK 将返回错误码 2106。
9. 消息包体大小限制为12KB,且不可调整,超出将导致消息发送失败,错误码 80002。
10. 启用好友关系检查后(【Chat 控制台】>【应用配置】>【功能配置】>【登录与消息】>【好友关系检查】),Chat 会在发起单聊时检查好友关系,仅允许好友之间发送单聊消息,陌生人发送单聊消息时 SDK 返回错误码 20009。
chat.sendMessage(options);
参数
参数 optionsObject类型,包含的属性值如下:
参数
类型
说明
message
Message
消息实例
options
Object
消息发送选项(消息内容的容器),选填
options的描述如下:
参数
类型
说明
onlineUserOnly
Boolean
消息是否仅发送给在线用户的标识,默认值为 false;设置为 true,则消息既不存漫游,也不会计入未读,也不会离线推送给接收方。适合用于发送广播通知等不重要的提示消息场景。在 AVChatRoom 发送消息不支持此选项
offlinePushInfo
Object
离线推送 配置
messageControlInfo
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
需要在 Chat 控制台打开 mutable-content 属性,支持 iOS 10 Service Extension 特性
资源的 key 值是 "image"

messageControlInfo 的描述如下:
参数
类型
说明
excludedFromUnreadCount
Boolean
true 消息不更新会话 unreadCount(消息存漫游),默认值 false
excludedFromLastMessage
Boolean
true 消息不更新会话 lastMessage(消息存漫游),默认值 false
excludedFromContentModeration
Boolean
消息是否不过内容审核(云端审核)
只有在开通【云端审核】功能后,excludedFromContentModeration 设置才有效,设置为 true,消息不过内容审核,设置为 false 消息过内容审核。
返回
Promise
示例
// 如果接收方不在线,则消息将存入漫游,且进行离线推送(在接收方 App 退后台或者进程被 kill 的情况下)。
// 离线推送的标题和内容使用默认值。
// 离线推送的说明请参考 https://www.tencentcloud.com/document/product/1047/33525
chat.sendMessage(message);
chat.sendMessage(message, {
onlineUserOnly: true // 如果接收方不在线,则消息不存入漫游,且不会进行离线推送
});
chat.sendMessage(message, {
offlinePushInfo: {
disablePush: true // 如果接收方不在线,则消息将存入漫游,但不进行离线推送
}
});
chat.sendMessage(message, {
// 如果接收方不在线,则消息将存入漫游,且进行离线推送(在接收方 App 退后台或者进程被 kill 的情况下)。
// 接入侧可自定义离线推送的标题及内容
offlinePushInfo: {
title: '', // 离线推送标题
description: '', // 离线推送内容
androidOPPOChannelID: '' // 离线推送设置 OPPO 手机 8.0 系统及以上的渠道 ID
}
});
chat.sendMessage(message, {
messageControlInfo: {
excludedFromUnreadCount: true, // 消息不更新会话 unreadCount(消息存漫游)
excludedFromLastMessage: true // 消息不更新会话 lastMessage(消息存漫游)
}
});
// 消息不过内容审核
chat.sendMessage(message, {
messageControlInfo: {
excludedFromContentModeration: true,
}
});
// 支持 VoIP push
chat.sendMessage(message, {
offlinePushInfo: {
disablePush: false,
disableVoipPush: false
}
});

获取设备权限

React Native 发送图片、视频、文件消息需要获取相关的设备权限。
Android
iOS
在 android 目录下,找到 app/src/main/AndroidManifest.xml ,添加以下权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
在 ios 目录下找到 Info.plist ,添加以下权限:
<key>NSCameraUsageDescription</key>
<string>我们需要访问您的相机以拍摄照片</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>我们需要访问您的相册以选择照片</string>
<key>NSMicrophoneUsageDescription</key>
<string>我们需要访问您的麦克风以录制音频</string>

接口限制

功能特性
限制项
限制说明
单聊/群聊
内容长度
单聊、群聊消息,单条消息最大长度限制为 12K。
发送频率
单聊消息:客户端发送单聊消息无限制;REST API 发送有频率限制,可查看相应接口的文档。
群聊消息:每个群限 40 条/秒(针对所有群类型、所有平台接口)。不同群内发消息,限频互不影响。
接收频率
单聊和群聊均无限制。
单个文件大小
发送文件消息时,SDK 最大支持发送单个文件大小为 100MB。
说明:
1. 消息数量超过限制后,后台优先下发优先级相对较高的消息,同等优先级的消息随机排序。如果同一秒内高优先级消息总数超过 40 条/秒,高优先级消息也会被抛弃。
2. 被频控限制的消息,不会下发,不会存入历史消息,但会给发送人返回成功,会触发 群内发言之前回调,但不会触发 群内发言之后回调
3. REST API 发送群组消息接口调用限频默认为 200次/秒,与上述 “每个群发送消息限 40 条/秒” 是不同概念,请区分开。
更多限制请参见文档 使用限制

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈