即时通信 IM React Native(发送消息)

创建文本消息的接口,此接口返回一个消息实例,可以在需要发送文本消息时调用 发送消息 接口发送消息实例。chat.createTextMessage(options)。

相关产品
即时通信 IM 产品页,含版本规格、价格与购买入口。

一、创建文本消息

接口

参数

参数 options 为 Object 类型,包含的属性值如下:

参数 类型 默认值 描述
to String – 消息接收方的 userID 或 groupID
conversationType String – 会话类型,取值 TencentCloudChat.TYPES.CONV_C2C(端到端会话)或 TencentCloudChat.TYPES.CONV_GROUP(群组会话)
priority String TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL 消息优先级
payload Object – 消息内容的容器
cloudCustomData String '' 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
receiverList Array | undefined – 定向接收消息的群成员列表(社群和直播群不支持)
isSupportExtension Boolean false 是否支持消息扩展,true 支持 false 不支持(需要你购买旗舰版或企业版套餐)

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: 'test', 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);});

二、创建@消息

创建可以附带 @ 提醒功能的文本消息的接口,此接口返回一个消息实例,可以在需要发送文本消息时调用 发送消息 接口发送消息实例。

接口

chat.createTextAtMessage(options);

参数

参数 options 为 Object 类型,包含的属性值如下:

参数 类型 默认值 描述
to String – 消息接收方的 userID 或 groupID
conversationType String – 会话类型,取值 TencentCloudChat.TYPES.CONV_C2C(端到端会话)或 TencentCloudChat.TYPES.CONV_GROUP(群组会话)
priority String TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL 消息优先级
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

注意:1. 在开通 云端审核 功能后,如果你发送的图片消息内容不合规,云端审核超时后 SDK 会触发 MESSAGE_MODIFIED 事件,回调的 message 对象 hasRiskContent 值为 true。

注意:2. v3.3.0起,支持自定义消息审核策略,请参见 customModerationConfigurationID 参数的描述。

注意:3. 支持的图片类型:jpg、jpeg、gif、png、bmp、image、webp。

接口

chat.createImageMessage(options);

参数

参数 options 为 Object 类型,包含的属性值如下表所示:

参数 类型 默认值 描述
to String – 消息的接收方
conversationType String – 会话类型,取值 TencentCloudChat.TYPES.CONV_C2C(端到端会话) 或 TencentCloudChat.TYPES.CONV_GROUP(群组会话)
priority String TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL 消息优先级
payload Object – 消息内容的容器
onProgress function – 获取上传进度的回调函数
cloudCustomData String '' 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
customModerationConfigurationID String | undefined  消息自定义审核配置 ID(v3.3.0起支持) 在开通【云端审核】功能后,你可以请前往 控制台 > 云端审核 > 审核配置 > 自定义配置 > 添加自定义配置获取配置 ID。自定义审核配置流程请参见 云端审核功能。该字段需要发消息前设置,仅用于控制发消息时的消息审核策略,其值不会存储在漫游和本地。

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

注意:在开通 云端审核 功能后,如果你发送的音频消息内容不合规,云端异步审核后 SDK 会触发 MESSAGE_MODIFIED 事件,回调的 message 对象 hasRiskContent 值为 true。

接口

chat.createAudioMessage(options);

参数

参数 options 为 Object 类型,包含的属性值如下:

参数 类型 默认值 描述
to String – 消息的接收方
conversationType String – 会话类型,取值 TencentCloudChat.TYPES.CONV_C2C(端到端会话) 或 TencentCloudChat.TYPES.CONV_GROUP(群组会话)
priority String TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL 消息优先级
payload Object – 消息内容的容器
cloudCustomData String '' 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)

payload 的描述如下:

参数 类型 描述
file Object 录音后得到的文件信息

返回值

Message

示例

import AudioRecorderPlayer, {AVEncodingOption} from 'react-native-audio-recorder-player'; // 记录录音时长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

注意:1. 在开通 云端审核 功能后,如果你发送的视频消息内容不合规,云端异步审核后 SDK 会触发 MESSAGE_MODIFIED 事件,回调的 message 对象 hasRiskContent 值为 true。

注意:2. v3.3.0起,支持自定义消息审核策略,请参见 customModerationConfigurationID 参数的描述。

注意:3. 支持的视频类型:mp4、 quicktime、 mov。

接口

chat.createVideoMessage(options);

参数

参数 options 为 Object 类型,包含的属性值如下:

参数 类型 默认值 描述
to String – 消息的接收方
conversationType String – 会话类型,取值 TencentCloudChat.TYPES.CONV_C2C(端到端会话)或 TencentCloudChat.TYPES.CONV_GROUP(群组会话)
priority String TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL 消息优先级
payload Object – 消息内容的容器
cloudCustomData String '' 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)
customModerationConfigurationID String | undefined  消息自定义审核配置 ID(v3.3.0起支持) 在开通【云端审核】功能后,你可以请前往 控制台 (云端审核 -> 审核配置 -> 自定义配置 -> 添加自定义配置) 获取配置 ID。【自定义审核】配置流程请参考 云端审核功能。该字段需要发消息前设置,仅用于控制发消息时的消息审核策略,其值不会存储在漫游和本地。

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);

参数

参数 options 为 Object 类型,包含的属性值如下:

参数 类型 默认值 描述
to String – 消息接收方的 userID 或 groupID
conversationType String – 会话类型,取值 TencentCloudChat.TYPES.CONV_C2C(端到端会话)或 TencentCloudChat.TYPES.CONV_GROUP(群组会话)
priority String TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL 消息优先级
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);

参数

参数 options 为 Object 类型,包含的属性值如下:

参数 类型 默认值 描述
to String – 消息接收方的 userID 或 groupID
conversationType String – 会话类型,取值 TencentCloudChat.TYPES.CONV_C2C 或 TencentCloudChat.TYPES.CONV_GROUP
priority String TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL 消息优先级
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);

参数

参数 options 为 Object 类型,包含的属性值如下:

参数 类型 默认值 描述
to String – 消息接收方的 userID 或 groupID
conversationType String – 会话类型,取值 TencentCloudChat.TYPES.CONV_C2C 或 TencentCloudChat.TYPES.CONV_GROUP
priority String TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL 消息优先级
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); });});

// uni-app 发送文件// 1. 选择文件uni.chooseFile({ count: 1, extension:['.zip','.doc'], success: function(res) { let message = chat.createFileMessage({ to: 'user1', conversationType: TencentCloudChat.TYPES.CONV_C2C, payload: { file: res }, onProgress: function(event) { console.log('file uploading:', event) } }); // 2. 发送消息 let promise = chat.sendMessage(message); promise.then(function(imResponse) { // 发送成功 console.log(imResponse); }).catch(function(imError) { // 发送失败 console.warn('sendMessage error:', imError); }); }});

九、创建地理位置消息

创建地理位置消息的接口,此接口返回一个消息实例,可以在需要发送地理位置消息时调用 发送消息 接口发送消息。

接口

chat.createLocationMessage(options);

参数

参数 options 为 Object 类型,包含的属性值如下:

参数 类型 默认值 描述
to String – 消息接收方的 userID 或 groupID
conversationType String – 会话类型,取值 TencentCloudChat.TYPES.CONV_C2C 或 TencentCloudChat.TYPES.TYPES.CONV_GROUP
priority String TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL 消息优先级
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);});

十、创建合并消息

创建合并消息的接口,此接口返回一个消息实例,可以在需要发送合并消息时调用 发送消息 接口发送消息。

注意:不支持合并已发送失败的消息,如果消息列表内传入了已发送失败的消息,则创建消息接口会报错。

接口

chat.createMergerMessage(options);

参数

参数 options 为 Object 类型,包含的属性值如下:

参数 类型 默认值 描述
to String – 消息接收方的 userID 或 groupID
conversationType String – 会话类型,取值 TencentCloudChat.TYPES.CONV_C2C 或 TencentCloudChat.TYPES.CONV_GROUP
priority String TencentCloudChat.TYPES.MSG_PRIORITY_NORMAL 消息优先级
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: '请升级IMSDK到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 接口把转发消息发送出去。

注意:支持单条转发和逐条转发。

接口

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);});

十三、发送消息

发送消息的接口,需先调用下列的创建消息实例的接口获取消息实例后,再调用该接口发送消息实例。

·创建文本消息

·创建 @ 消息

·创建图片消息

·创建音频消息

·创建视频消息

·创建自定义消息

·创建表情消息

·创建文件消息

·创建地理位置消息

·创建合并消息

·创建转发消息

chat.sendMessage(options);

参数

参数 options 为 Object 类型,包含的属性值如下:

参数 类型 描述
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 离线推送透传内容
ignoreIOSBadge Boolean 离线推送忽略 badge 计数(仅对 iOS 生效),如果设置为 true,在 iOS 接收端,这条消息不会使 App 的应用图标未读计数增加
androidOPPOChannelID String 离线推送设置 OPPO 手机 8.0 系统及以上的渠道 ID

messageControlInfo 的描述如下:

参数 类型 描述
excludedFromUnreadCount Boolean true 消息不更新会话 unreadCount(消息存漫游),默认值 false
excludedFromLastMessage Boolean true 消息不更新会话 lastMessage(消息存漫游),默认值 false
excludedFromContentModeration Boolean 消息是否不过内容审核(包含本地审核和云端审核)只有在开通本地审核或云端审核功能后,excludedFromContentModeration 设置才有效,设置为 true,消息不过内容审核,设置为 false 消息过内容审核。云端审核开通流程请参见 云端审核

返回

Promise

示例

// 如果接收方不在线,则消息将存入漫游,且进行离线推送(在接收方 App 退后台或者进程被 kill 的情况下)。// 离线推送的标题和内容使用默认值。// 离线推送的说明请参考 https://cloud.tencent.com/document/product/269/3604chat.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, }});

十四、获取设备权限

React Native 发送图片、视频、文件消息需要获取相关的设备权限。

AndroidiOS在 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。

注意:说明:

更多限制请参见文档 使用限制。

赞 (0)
上一篇 4天前
下一篇 4天前