<intent-filter>
<action name="android.intent.action.VIEW"/>
<category name="android.intent.category.DEFAULT"/>
<data scheme="rong" host="你的包名" pathPrefix="/conversation/"/>
</intent-filter>
<intent-filter>
<action name="android.intent.action.VIEW" />
<category name="android.intent.category.DEFAULT" />
<data host="你的包名" path="/conversationlist" scheme="rong" />
</intent-filter>
<intent-filter>
<action name="android.intent.action.VIEW" />
<category name="android.intent.category.DEFAULT" />
<data host="你的包名" pathPrefix="/push_message" scheme="rong" />
</intent-filter>
其中 data中的host为集成应用的包名
目前rongCloud2与bMap同时使用会引起插件冲突。经过与融云官方技术的讨论沟通,是音视频相关功能引起的,目前没有更好的解决方案。 所以如果用户未使用rongCloud2的音视频功能,那么官方提供了移除音视频版的iOS插件包,用户可以下载上传到自定义插件中去使用。 具体操作如下:
点击下面的链接 下载 移除音视频版的iOS融云插件,然后通过自定义插件方式上传使用。
下载插件包后,在云端工作台通过上传自定义插件包的方式上传(名称还是rongCloud2,插件包只包含iOS版本)。
移除原rongCloud2插件,绑定自定义插件到项目,然后重新编译iOS版本即可。
需要注意的是:自定义插件版的rongCloud2与原本的rongCloud2不可以同时绑定到同一个项目,所以你需要分开编译iOS版本和android版本。在编译iOS版本的时候,添加绑定自定义rongCloud2,编译Android版本的时候绑定插件库的rongCloud2
sendImageMessage sendGifMessage sendHQVoiceMessage sendFileMessage sendSightMessage
sendCommandNotificationMessage sendContactNotificationMessage sendProfileNotificationMessage sendInformationNotificationMessage sendGroupNotificationMessage sendCommandMessage
setBeauty setBeautyFilter resetBeauty getCurrentBeautyOption getCurrentBeautyFilter getBeautyEngineVersion
为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。
rongCloud2是rongCloud的优化版
融云 Rong Cloud 是国内首家专业的即时通讯云服务提供商,专注为互联网、移动互联网开发者提供即时通讯基础能力和云端服务。通过融云平台,开发者不必搭建服务端硬件环境,就可以将即时通讯、实时网络能力快速集成至应用中。
rongCloud2 封装了融云即时通讯能力库 IMLib SDK 的 API,对融云的相关接口做了一一对应的封装,功能详情可参考目录。
使用 rongCloud2 插件之前,请先 注册 融云的开发者帐号并申请创建 App,创建 App 后,可以在 开发者后台 获取 App Key 和 App Secret 用于开发。
开发前请先认真阅读相关的 融云开发文档和视频。
弃用的方法:
修改的方法:
新增的方法:
本文主要介绍了使用融云 IM 时,何时会收到远程推送、如何使用远程推送、如何获取远程推送的内容。
在使用远程推送之前,您需要先了解融云 SDK 的运行状态。
融云 SDK 根据 iOS App 运行的特性,主要有以下三种运行状态:
1、 前台状态 如字面意思,App 前台可见时插件处于前台状态。此时 App 使用融云的长连接通道来收发消息。
2、 后台活动状态 当 App 进入后台 2 分钟之内,插件于后台活跃状态。此时 App 使用融云的长连接通道接收消息。
3、 后台暂停状态当 App 进入后台 2 分钟之后或被杀进程或被冻结,插件处于后台暂停状态。此时融云的长连接通道会断开,融云 Server 会通过 APNs 将消息以远程推送的形式下发到客户端。 此状态下如果有人给该用户发送消息,融云的服务器会根据 deviceToken 和推送证书将消息发送到苹果推送服务器,苹果服务器会将该消息推送到客户端。
此过程的 1-4 步骤请参考融云官方的 推送开发指南----如何使用远程推送。其中涉及到的 AppID即为 Bundle Identifie,与 YonBuilder移动开发 平台上的包名是同一个概念,在 YonBuilder移动开发平台上应用的概览里可以查看。
以上步骤都已经实现后,还需要使用您 App 的用户允许通知,才能收到远程推送。您可以在设备的设置应用中,查看当前App是否允许通知。
点击通知栏的远程推送时,如果此时 App 已经被系统冻结,则YonBuilder移动开发平台会将本次推送的内容通过事件监听回调的方式交给开发者。具体使用如下:
api.addEventListener({
name: 'noticeclicked'
}, function(ret) {
if (ret && ret.value) {
var result = ret.value;
}
})
如果 App 未被系统冻结,则您在 setOnReceiveMessageListener 接口中可以捕获该消息,详情参考 setOnReceiveMessageListener 接口说明。
音视频通话推送功能详细请参考 VoIP 推送设置文档(1-6)。其中步骤6参考config.xml关于后台运行权限的配置。
融云默认使用自己平台的推送服务,由于该推送服务属于应用级别的,所以可能受到系统平台的限制,建议您在使用时,在设置里打开自启动权限和通知权限,或者勾选“信任此应用”等,以提高推送到达率
集成第三方推送(使用thirdpartPush自定义插件)
thirdpartPush 插件集成了小米、魅族、vivo、oppo平台的推送,在使用该插件之前需要到相应的平台创建应用并获取相应的 appKey & appSecret等信息,并登录融云开发者后台在应用标识中配置相应的信息,并将该插件以自定义插件形式编译打包 注意:需要在调用init方法是配置或开启相应的第三方推送
<!-- vivo 推送配置项 -->
<meta-data name="com.vivo.push.api_key" value="您的 vivo 推送平台生成 AppKey"/>
<meta-data name="com.vivo.push.app_id" value="您的 vivo 推送平台生成 AppID"/>
华为推送集成需要下载自定义插件 huaweiPush,使用方式为rongCloud2 初始化成功后再初始化 huaweiPush 插件即可,huaweiPush插件初始化可参考文档
thirdpartPush 下载地址:
在rongCloud2插件的最新版本中未提供armeabi的so库,因此需要在config.xml 增加标签 <preference name="android_abi" value="arm64-v8a"/>
否则可能导致app出现闪退问题
#插件接口
初始化融云 SDK,调用 connect 连接前务必保证调用此方法
调用前请在 config.xml 中设置内容如下:
<feature name="rongCloud2">
<param name="appKey" value="此处填写 App Key 值" />
<param name="requestPermission" value="true" />
</feature>
其中 value 的值请替换为您在融云开发者平台上申请的 App Key 值. requestPermission: 是否自动请求通知权限,布尔类型,只支持iOS。插件默认会向系统请求通知权限,亦可以根据需要配置为false,然后调用api.requestPermission方法请求通知权限。
init(params, callback(ret, err))
miPush:
appId: //字符串类型;小米后台申请的appid
appKey: //字符串类型;小米后台申请的appKey
huaweiPush:
meizuPush:
{
appId:'', // 字符串;魅族推送的AppID
appKey:'' // 字符串;魅族推送 AppKey
}
oppoPush:
{
appKey:'', // 字符串;oppo推送的key
appSecret:'' // 字符串;oppo推送 secret
}
vivoPush:
ret:
{
status: 'success', // 状态码:success / error
}
err:
{
code: -10002 // 错误码
}
错误说明 更多状态码:
错误码 | 说明 |
---|---|
-10002 | 输入参数错误 |
var rong = api.require('rongCloud2');
rong.init(function(ret, err) {
if (ret.status == 'error')
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 1.1.0 及更高版本
initRTC(callback(ret, err))
ret:
{
status: 'success', // 状态码:success / error
}
var rong = api.require('rongCloud2');
rong.initRTC(function(ret, err) {
if (ret.status == 'error')
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 1.1.0 及更高版本
配置推送相关参数
configurationParameter({params})
alertTitle:
showNickname:
var rong = api.require('rongCloud2');
rong.configurationParameter({
});
iOS系统,Android系统
可提供的 1.1.0 及更高版本
连接融云 IM 服务器,进行后续各种方法操作前务必要先调用此方法,(Android自3.2.4版本【包括3.2.4】以后,需要开通音视频服务,否则会导致连接失败)
connect({params}, callback(ret, err))
token:
ret:
{
status: 'success', // 状态码:success / error
result:
{
userId: '9527' // 当前登录的用户 Id
}
}
err:
{
code: 31004 // 错误码
}
错误说明 更多状态码:
错误码 | 说明 |
---|---|
31003 | 服务器不可用 |
31004 | 错误的令牌(Token),Token 解析失败,请重新向身份认证服务器获取 Token |
31002 | 可能是错误的 App Key,或者 App Key 被服务器积极拒绝 |
33002 | 服务端数据库错误 |
31000 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10002 | 输入参数错误 |
-1000 | (此错误只发生在 iOS)当已经 connect 成功后再次 connect 时会返回此错误 |
var rong = api.require('rongCloud2');
rong.init(function(ret, err) {
if (ret.status == 'error')
api.toast({ msg: err.code });
});
rong.connect({
token: 'ThptTWyiPPPvZHvuSiuri82yq+hfEluLjZ78E1qo4hEVSFQNpqdoPu406urMWKN4Z3/olWR+v9JVLAwfOQoLrA=='},function(ret, err) {
if (ret.status == 'success') api.toast({ msg: ret.result.userId });
});
iOS系统,Android系统
可提供的 1.1.0 及更高版本
主动重新连接服务器。融云的 SDK 会自动进行重连,一般情况下您不需要调用这个方法;2.0版本弃用该方法。
reconnect(callback(ret, err))
iOS系统,Android系统
此方法在YonBuilder移动开发平台融云插件1.1.0中支持,由于融云支持掉线后自动重连,所以在2.0.0版本中弃用该方法
断开连接
disconnect({params}, callback(ret, err))
isReceivePush:
ret:
{
status: 'success' // 状态码:success
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.disconnect({
isReceivePush: true
}, function(ret, err) {
if ('success' == ret.status) {
api.toast({ msg: '断开连接成功!' });
}
}); // 断开,且不再接收 Push
iOS系统,Android系统
可提供的 1.1.0 及更高版本
设置连接状态变化的监听器,请在调用 init 方法之后,调用 connect 方法之前设置
setConnectionStatusListener(callback(ret, err))
ret:
{
result:
{
connectionStatus: 'CONNECTED' // 连接状态
}
}
var rong = api.require('rongCloud2');
// 之前调用 init 的代码省略
rong.setConnectionStatusListener(function(ret, err) {
api.toast({ msg: ret.result.connectionStatus });
});
// 之后调用 connect 的代码省略
iOS系统,Android系统
可提供的 1.1.0 及更高版本
发送文字消息
sendTextMessage({params}, callback(ret, err))
conversationType:
targetId:
text:
extra:
mentionedInfo:
type:"all" //(可选项) 字符串类型;@消息类型,默认值:all;取值范围:(all,part);all为@群组里所有人;part为@部分人,
userIdList:['123'] //字符串类型的数组;用户id;当type为part时,需要填写此字段;
isCanIncludeExpansion:
expansion:
{
'自定义key': '自定义value',
'自定义key1': '自定义value1',
// ...
}
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / success / error
result:
{
message:
{
content: {
text: 'Hello world!',
extra: ''
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
extra: '',
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '16', // 接收者 Id
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 发送状态:SENDING, SENT 或 FAILED
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0, // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
messageUId: '' //消息UID,如果无则显示空字符串
}
}
}
成功:
{
status: 'success', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
err:
内部字段:
{
code: 30003
}
状态码说明 更多状态码:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.sendTextMessage({
conversationType: 'PRIVATE',
targetId: '9527',
text: 'Hello world.',
extra: ''
}, function(ret, err) {
if (ret.status == 'prepare')
api.toast({ msg: JSON.stringify(ret.result.message) });
else if (ret.status == 'success')
api.toast({ msg: ret.result.message.messageId });
else if (ret.status == 'error')
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 1.1.0 及更高版本
发送语音消息
sendVoiceMessage({params}, callback(ret, err))
conversationType:
targetId:
voicePath:
duration:
extra:
isCanIncludeExpansion:
expansion:
{
'自定义key': '自定义value',
'自定义key1': '自定义value1',
// ...
}
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / success / error
result:
{
message:
{
content: {
voicePath: '/xxx/xxx/voice.amr',
duration: 5,
extra: ''
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '16', // 接收者 Id
objectName: 'RC:VcMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 发送状态:SENDING, SENT 或 FAILED
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0 // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
messageUId: '' //消息UID,如果无则显示空字符串
}
}
}
成功:
{
status: 'success', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
err:
{
code: 30003
}
状态码说明 更多状态码:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.sendVoiceMessage({
conversationType: 'PRIVATE',
targetId: '9527',
voicePath: 'fs:///xxx/xxx/voice.amr',
duration: 5,
extra: ''
}, function(ret, err) {
if (ret.status == 'prepare')
api.toast({ msg: JSON.stringify(ret.result.message) });
else if (ret.status == 'success')
api.toast({ msg: ret.result.message.messageId });
else if (ret.status == 'error')
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 1.1.0 及更高版本
发送高清语音消息
sendHQVoiceMessage({params}, callback(ret, err))
conversationType:
targetId:
voicePath:
duration:
extra:
isCanIncludeExpansion:
expansion:
{
'自定义key': '自定义value',
'自定义key1': '自定义value1',
// ...
}
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / success / error
result:
{
message:
{
content: {
voicePath: '/xxx/xxx/voice.amr',
duration: 5,
extra: ''
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '16', // 接收者 Id
objectName: 'RC:VcMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 发送状态:SENDING, SENT 或 FAILED
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0 // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
messageUId: '' //消息UID,如果无则显示空字符串
}
}
}
成功:
{
status: 'success', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
err:
{
code: 30003
}
状态码说明 更多状态码:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.sendHQVoiceMessage({
conversationType: 'PRIVATE',
targetId: '9527',
voicePath: 'fs:///xxx/xxx/voice.amr',
duration: 5,
extra: ''
}, function(ret, err) {
if (ret.status == 'prepare')
api.toast({ msg: JSON.stringify(ret.result.message) });
else if (ret.status == 'success')
api.toast({ msg: ret.result.message.messageId });
else if (ret.status == 'error')
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 3.2.8 及更高版本
发送图片消息
sendImageMessage({params}, callback(ret, err))
conversationType:
targetId:
imagePath:
extra:
isFull:
isCanIncludeExpansion:
expansion:
{
'自定义key': '自定义value',
'自定义key1': '自定义value1',
// ...
}
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / progress / success / error
result:
{
message:
{
content: {
imageUrl: '/xxx/xxx/image.jpg',
thumbPath: '/xxx/xxx/thumb.jpg',
extra: ''
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '16', // 接收者 Id
objectName: 'RC:ImgMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 发送状态:SENDING, SENT 或 FAILED
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0 // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
messageUId: '' //消息UID,如果无则显示空字符串
}
}
}
发送中:
{
status: 'progress', // 状态码:prepare / progress / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
},
progress: 66 // 发送进度
}
}
成功:
{
status: 'success', // 状态码:prepare / progress / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / progress / success / error
result:
{
message:
{
sentStatus: 'FAILED', // 发送状态:SENDING, SENT 或 FAILED
messageId: 608 // 本地消息 Id
}
}
}
err:
{
code: 30003
}
状态码说明 更多状态码:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.sendImageMessage({
conversationType: 'PRIVATE',
targetId: '9527',
imagePath: 'fs:///xxx/xxx/picture.jpg',
extra: ''
}, function(ret, err) {
if (ret.status == 'prepare')
api.toast({ msg: JSON.stringify(ret.result.message) });
else if (ret.status == 'progress')
api.toast({ msg: ret.result.progress });
else if (ret.status == 'success')
api.toast({ msg: ret.result.message.messageId });
else if (ret.status == 'error')
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 1.1.0 及更高版本
发送 GIF 消息
sendGifMessage({params}, callback(ret, err))
conversationType:
targetId:
imagePath:
extra:
width:
height:
isCanIncludeExpansion:
expansion:
{
'自定义key': '自定义value',
'自定义key1': '自定义value1',
// ...
}
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / progress / success / error
result:
{
message:
{
content: {
imageUrl: '/xxx/xxx/image.jpg',
thumbPath: '/xxx/xxx/thumb.jpg',
extra: ''
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '16', // 接收者 Id
objectName: 'RC:ImgMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 发送状态:SENDING, SENT 或 FAILED
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0 // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
messageUId: '' //消息UID,如果无则显示空字符串
}
}
}
发送中:
{
status: 'progress', // 状态码:prepare / progress / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
},
progress: 66 // 发送进度
}
}
成功:
{
status: 'success', // 状态码:prepare / progress / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / progress / success / error
result:
{
message:
{
sentStatus: 'FAILED', // 发送状态:SENDING, SENT 或 FAILED
messageId: 608 // 本地消息 Id
}
}
}
err:
{
code: 30003
}
状态码说明 更多状态码:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.sendGifMessage({
conversationType: 'PRIVATE',
targetId: '9527',
imagePath: 'fs:///xxx/xxx/picture.gif',
width: 100,
height: 100,
extra: ''
}, function(ret, err) {
if (ret.status == 'prepare')
api.toast({ msg: JSON.stringify(ret.result.message) });
else if (ret.status == 'progress')
api.toast({ msg: ret.result.progress });
else if (ret.status == 'success')
api.toast({ msg: ret.result.message.messageId });
else if (ret.status == 'error')
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 3.2.8 及更高版本
发送小视频消息
sendSightMessage({params}, callback(ret, err))
conversationType:
targetId:
sightPath:
thumbPath:
extra:
duration:
isCanIncludeExpansion:
expansion:
{
'自定义key': '自定义value',
'自定义key1': '自定义value1',
// ...
}
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / progress / success / error
result:
{
message:
{
content: {
imageUrl: '/xxx/xxx/image.jpg',
thumbPath: '/xxx/xxx/thumb.jpg',
extra: ''
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '16', // 接收者 Id
objectName: 'RC:ImgMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 发送状态:SENDING, SENT 或 FAILED
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0 // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
messageUId: '' //消息UID,如果无则显示空字符串
}
}
}
发送中:
{
status: 'progress', // 状态码:prepare / progress / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
},
progress: 66 // 发送进度
}
}
成功:
{
status: 'success', // 状态码:prepare / progress / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / progress / success / error
result:
{
message:
{
sentStatus: 'FAILED', // 发送状态:SENDING, SENT 或 FAILED
messageId: 608 // 本地消息 Id
}
}
}
err:
{
code: 30003
}
状态码说明 更多状态码:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.sendSightMessage({
conversationType: 'PRIVATE',
targetId: '9527',
thumbPath: 'fs:///xxx/xxx/picture.jpg',
sightPath:'',
duration: 10,
extra: ''
}, function(ret, err) {
if (ret.status == 'prepare')
api.toast({ msg: JSON.stringify(ret.result.message) });
else if (ret.status == 'progress')
api.toast({ msg: ret.result.progress });
else if (ret.status == 'success')
api.toast({ msg: ret.result.message.messageId });
else if (ret.status == 'error')
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 3.2.8 及更高版本
发送文件消息
sendFileMessage({params}, callback(ret, err))
conversationType:
targetId:
filePath:
extra:
isCanIncludeExpansion:
expansion:
{
'自定义key': '自定义value',
'自定义key1': '自定义value1',
// ...
}
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / progress / success / error
result:
{
message:
{
content: {
imageUrl: '/xxx/xxx/image.jpg',
thumbPath: '/xxx/xxx/thumb.jpg',
extra: ''
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '16', // 接收者 Id
objectName: 'RC:ImgMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 发送状态:SENDING, SENT 或 FAILED
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0 // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
messageUId: '' //消息UID,如果无则显示空字符串
}
}
}
发送中:
{
status: 'progress', // 状态码:prepare / progress / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
},
progress: 66 // 发送进度
}
}
成功:
{
status: 'success', // 状态码:prepare / progress / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / progress / success / error
result:
{
message:
{
sentStatus: 'FAILED', // 发送状态:SENDING, SENT 或 FAILED
messageId: 608 // 本地消息 Id
}
}
}
err:
{
code: 30003
}
状态码说明 更多状态码:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.sendFileMessage({
conversationType: 'PRIVATE',
targetId: '9527',
filePath: 'fs:///xxx/xxx/picture.gif',
extra: ''
}, function(ret, err) {
if (ret.status == 'prepare')
api.toast({ msg: JSON.stringify(ret.result.message) });
else if (ret.status == 'progress')
api.toast({ msg: ret.result.progress });
else if (ret.status == 'success')
api.toast({ msg: ret.result.message.messageId });
else if (ret.status == 'error')
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 3.2.8 及更高版本
发送图文消息
sendRichContentMessage({params}, callback(ret, err))
conversationType:
targetId:
title:
description:
imageUrl:
extra:
isCanIncludeExpansion:
expansion:
{
'自定义key': '自定义value',
'自定义key1': '自定义value1',
// ...
}
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / success / error
result:
{
message:
{
content: {
title: 'Big News',
description: 'I am Ironman.',
imageUrl: 'http://p1.cdn.com/fds78ruhi.jpg',
extra: '',
url: ''
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '16', // 接收者 Id
objectName: 'RC:ImgTextMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 发送状态:SENDING, SENT 或 FAILED
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0 // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
messageUId: '' //消息UID,如果无则显示空字符串
}
}
}
成功:
{
status: 'success', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / success / error
result:
{
message:
{
sentStatus: 'FAILED', // 发送状态:SENDING, SENT 或 FAILED
messageId: 608 // 本地消息 Id
}
}
}
err:
{
code: 30003
}
状态码说明 更多状态码:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.sendRichContentMessage({
conversationType: 'PRIVATE',
targetId: '9527',
title: 'Big News',
description: 'I am Ironman.'
imageUrl: 'http://ironman.com/xxx/xxx/picture.jpg',
extra: ''
}, function(ret, err) {
if (ret.status == 'prepare')
api.toast({ msg: JSON.stringify(ret.result.message) });
else if (ret.status == 'success')
api.toast({ msg: ret.result.message.messageId });
else if (ret.status == 'error')
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 1.1.0 及更高版本
发送位置消息
sendLocationMessage({params}, callback(ret, err))
conversationType:
targetId:
latitude:
longitude:
poi:
imagePath:
extra:
isCanIncludeExpansion:
expansion:
{
'自定义key': '自定义value',
'自定义key1': '自定义value1',
// ...
}
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / progress / success / error
result:
{
message:
{
content: {
latitude: 39.9139
longitude: 116.3917
poi: '北京市朝阳区北苑路北辰泰岳大厦',
imagePath: '/xxx/xxx/location.jpg'
extra: ''
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '16', // 接收者 Id
objectName: 'RC:LBSMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 发送状态:SENDING, SENT 或 FAILED
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0 // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
messageUId: '' //消息UID,如果无则显示空字符串
}
}
}
发送中:
{
status: 'progress', // 状态码:prepare / progress / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
},
progress: 66 // 发送进度
}
}
成功:
{
status: 'success', // 状态码:prepare / progress / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / progress / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
err:
{
code: 30003
}
状态码说明 更多状态码:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.sendLocationMessage({
conversationType: 'PRIVATE',
targetId: '9527',
latitude: 39.9139,
longitude: 116.3917,
poi: '北京市朝阳区北苑路北辰泰岳大厦',
imagePath: 'fs:///xxx/xxx/location.jpg',
extra: ''
}, function(ret, err) {
if (ret.status == 'prepare')
api.toast({ msg: JSON.stringify(ret.result.message) });
else if (ret.status == 'progress')
api.toast({ msg: ret.result.progress });
else if (ret.status == 'success')
api.toast({ msg: ret.result.message.messageId });
else if (ret.status == 'error')
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 1.1.0 及更高版本
发送命令消息,可以用来实现任何自定义消息的发送
sendCommandNotificationMessage({params}, callback(ret, err))
conversationType:
targetId:
name:
data:
isCanIncludeExpansion:
expansion:
{
'自定义key': '自定义value',
'自定义key1': '自定义value1',
// ...
}
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / success / error
result:
{
message:
{
content: {
name: 'AddFriend',
data: '{\"inviteUserId\":123}'
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '16', // 接收者 Id
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 发送状态:SENDING, SENT 或 FAILED
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0 // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
messageUId: '' //消息UID,如果无则显示空字符串
}
}
}
成功:
{
status: 'success', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
err:
{
code: 30003
}
状态码说明 更多状态码:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.sendCommandNotificationMessage({
conversationType: 'PRIVATE',
targetId: '9527',
name: 'AddFriend',
data: '{\"inviteUserId\":123}'
}, function(ret, err) {
if (ret.status == 'prepare')
api.toast({ msg: JSON.stringify(ret.result.message) });
else if (ret.status == 'success')
api.toast({ msg: ret.result.message.messageId });
else if (ret.status == 'error')
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 1.1.0 及更高版本
发送好友通知消息
sendContactNotificationMessage({params}, callback(ret, err))
conversationType:
targetId:
operation:
sourceUserId:
message:
extra:
isCanIncludeExpansion:
expansion:
{
'自定义key': '自定义value',
'自定义key1': '自定义value1',
// ...
}
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / success / error
result:
{
message:
{
content: {
name: 'AddFriend',
data: '{\"inviteUserId\":123}'
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '16', // 接收者 Id
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 发送状态:SENDING, SENT 或 FAILED
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0 // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
messageUId: '' //消息UID,如果无则显示空字符串
}
}
}
成功:
{
status: 'success', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
err:
{
code: 30003
}
状态码说明 更多状态码:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.sendContactNotificationMessage({
conversationType: 'PRIVATE',
targetId: '9527',
sourceUserId: '9528',
operation: '9528',
message: '9528',
extra: '{\"inviteUserId\":123}'
}, function(ret, err) {
if (ret.status == 'prepare')
api.toast({ msg: JSON.stringify(ret.result.message) });
else if (ret.status == 'success')
api.toast({ msg: ret.result.message.messageId });
else if (ret.status == 'error')
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 3.2.8 及更高版本
发送资料通知消息
sendProfileNotificationMessage({params}, callback(ret, err))
conversationType:
targetId:
operation:
data:
extra:
isCanIncludeExpansion:
expansion:
{
'自定义key': '自定义value',
'自定义key1': '自定义value1',
// ...
}
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / success / error
result:
{
message:
{
content: {
name: 'AddFriend',
data: '{\"inviteUserId\":123}'
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '16', // 接收者 Id
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 发送状态:SENDING, SENT 或 FAILED
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0 // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
messageUId: '' //消息UID,如果无则显示空字符串
}
}
}
成功:
{
status: 'success', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
err:
{
code: 30003
}
状态码说明 更多状态码:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.sendProfileNotificationMessage({
conversationType: 'PRIVATE',
targetId: '9527',
operation: '9528',
data: 'data',
extra: '{\"inviteUserId\":123}'
}, function(ret, err) {
if (ret.status == 'prepare')
api.toast({ msg: JSON.stringify(ret.result.message) });
else if (ret.status == 'success')
api.toast({ msg: ret.result.message.messageId });
else if (ret.status == 'error')
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 3.2.8 及更高版本
发送通知消息
sendInformationNotificationMessage({params}, callback(ret, err))
conversationType:
targetId:
message:
extra:
isCanIncludeExpansion:
expansion:
{
'自定义key': '自定义value',
'自定义key1': '自定义value1',
// ...
}
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / success / error
result:
{
message:
{
content: {
name: 'AddFriend',
data: '{\"inviteUserId\":123}'
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '16', // 接收者 Id
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 发送状态:SENDING, SENT 或 FAILED
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0 // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
messageUId: '' //消息UID,如果无则显示空字符串
}
}
}
成功:
{
status: 'success', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
err:
{
code: 30003
}
状态码说明 更多状态码:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.sendInformationNotificationMessage({
conversationType: 'PRIVATE',
targetId: '9527',
message: '9528',
extra: '{\"inviteUserId\":123}'
}, function(ret, err) {
if (ret.status == 'prepare')
api.toast({ msg: JSON.stringify(ret.result.message) });
else if (ret.status == 'success')
api.toast({ msg: ret.result.message.messageId });
else if (ret.status == 'error')
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 3.2.8 及更高版本
发送群组通知消息类消息
sendGroupNotificationMessage({params}, callback(ret, err))
conversationType:
targetId:
operation:
operatorUserId:
message:
data:
extra:
isCanIncludeExpansion:
expansion:
{
'自定义key': '自定义value',
'自定义key1': '自定义value1',
// ...
}
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / success / error
result:
{
message:
{
content: {
name: 'AddFriend',
data: '{\"inviteUserId\":123}'
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '16', // 接收者 Id
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 发送状态:SENDING, SENT 或 FAILED
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0 // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
messageUId: '' //消息UID,如果无则显示空字符串
}
}
}
成功:
{
status: 'success', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
err:
{
code: 30003
}
状态码说明 更多状态码:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.sendGroupNotificationMessage({
conversationType: 'PRIVATE',
targetId: '9527',
operation: '9528',
operatorUserId: '9528',
message: '9528',
data: 'data',
extra: '{\"inviteUserId\":123}'
}, function(ret, err) {
if (ret.status == 'prepare')
api.toast({ msg: JSON.stringify(ret.result.message) });
else if (ret.status == 'success')
api.toast({ msg: ret.result.message.messageId });
else if (ret.status == 'error')
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 3.2.8 及更高版本
发送命令消息,您需要这种类型的消息时可以直接使用,不需要再自定义。此消息不保存、不计数。
sendCommandMessage({params}, callback(ret, err))
conversationType:
targetId:
name:
data:
isCanIncludeExpansion:
expansion:
{
'自定义key': '自定义value',
'自定义key1': '自定义value1',
// ...
}
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / success / error
result:
{
message:
{
content: {
name: 'AddFriend',
data: '{\"inviteUserId\":123}'
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '16', // 接收者 Id
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 发送状态:SENDING, SENT 或 FAILED
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0 // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
messageUId: '' //消息UID,如果无则显示空字符串
}
}
}
成功:
{
status: 'success', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
err:
{
code: 30003
}
状态码说明 更多状态码:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.sendCommandMessage({
conversationType: 'PRIVATE',
targetId: '9527',
name: 'AddFriend',
data: '{\"inviteUserId\":123}'
}, function(ret, err) {
if (ret.status == 'prepare')
api.toast({ msg: JSON.stringify(ret.result.message) });
else if (ret.status == 'success')
api.toast({ msg: ret.result.message.messageId });
else if (ret.status == 'error')
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 1.1.0 及更高版本
设置接收消息的监听器,请在调用 init 方法之后,调用 connect 方法之前设置
所有接收到的消息、通知、状态都经由此处设置的监听器处理。包括私聊消息、讨论组消息、群组消息、聊天室消息以及各种其他消息、通知、状态等
setOnReceiveMessageListener(callback(ret, err))
ret:
{
result: {
message:{
content: { //JSON对象;消息内容
text: 'Hello world!',
extra: ''
},
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '55', // 这里对应消息发送者的 userId
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 发送状态:SENDING, SENT 或 FAILED
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0, // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedStatus: 'LISTENED' // 消息状态(android不支持) 取值范围:UNREAD,READ,LISTENED,DOWNLOADED,RETRIEVED,MULTIPLERECEIVE
isRead:true, //获取是否已读取的状态(ios不支持)
isListened:true, //获取是否已被收听的状态(ios不支持)
isDownload:true, //获取文件是否已经下载的状态(ios不支持)
isRetrieved:false, //获取是否已经被收取过(ios不支持)
messageUId: '' //消息UID,如果无则显示空字符串
isMultipleReceive: false //获取是否被其他端同时接收(ios不支持)
},
left: 0 // 剩余未拉取的消息数目
},
isPushMsg: false //布尔类型;是否是推送消息,本参数仅在iOS平台有效。
//在 iOS 平台上APP收到推送时,有以下几种情况:
//1,应用在前台激活状态,开发者可同本接口获取推送消息,此时 result数据格式如下文说明
//2,应用在后台但未被杀死,此时系统弹出推送提示。若用户点击推送提示,开发者可同本接口获取推送消息,此时 result数据格式如下文说明。若用户不点击推送提示,直接点击app进入应用,则获取
//3,应用未激活,此时收到推送后,系统会弹出提示框,用户点击该提示框,开发者可通过api对象下noticeclicked事件监听到推送消息。
//注意:如果用户不点击推送提示框,而是直接点击app图标进入应用,开发者是收不到推送消息的。
}
档 isPushMsg 为 true 时 result 数据的格式说明:
{
_j_msgid:20266200178825380, //数字类型;
infoid:'0', //字符串类型;
_j_business:1, //数字类型;
id:62358', //字符串类型;
aps:{ //JSON对象
sound:'default', //字符串类型;
badge:1, //数字类型;
alert:'你有新的消息' //字符串类型;
},
_j_uid:12108421449, //数字类型;
type:‘8’, //字符串类型;
}
var rong = api.require('rongCloud2');
// 之前调用 init 的代码省略
rong.setOnReceiveMessageListener(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result.message) });
api.toast({ msg: ret.result.message.left });
})
// 之后调用 connect 的代码省略
iOS系统,Android系统
可提供的 1.1.0 及更高版本
获取当前用户离线消息时间
getOfflineMessageDuration(callback(ret, err))
ret:
status: true //布尔类型;获取到的状态
duration: '' //字符串类型;当前用户离线消息时间,单位:天
err:
errCode: '' //数字类型;错误码;详情参见:https://www.rongcloud.cn/docs/status_code.html#android_ios_code
var rong = api.require('rongCloud2');
rong.getOfflineMessageDuration(function(ret, err) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 3.1.1 及更高版本
设置当前用户离线消息存储时间
setOfflineMessageDuration(params, callback(ret, err))
duration:
ret:
status: true //布尔类型;获取到的状态
time: '' //字符串类型;设置成功后的时间(毫秒值)(iOS不支持)
err:
errCode: '' //数字类型;错误码;详情参见:https://www.rongcloud.cn/docs/status_code.html#android_ios_code
var rong = api.require('rongCloud2');
rong.setOfflineMessageDuration({duration:2}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 3.1.1 及更高版本
搜索本地历史消息
searchConversations({params}, callback(ret))
conversationTypes:
objectNames:
keyword:
ret:
{
status: 'success',
result: [
{
conversationTitle: 'Ironman', // 会话标题
conversationType: 'PRIVATE', // 参见 会话类型 枚举
draft: '', // 文字消息草稿的内容
targetId: 'group001', // 消息目标 Id
latestMessage: {
text: 'Hello world!',
extra: ''
}, // 最后一条消息的内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
sentStatus: 'SENT', // 参见 发送出的消息状态
*notificationStatus: 'NOTIFY', // 会话通知状态,2.0.0将不再提供此字段,可通过 getConversationNotificationStatus 获取
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
receivedStatus: 'READ', // 参见 接收到的消息状态
senderUserId: '55', // 发送消息的用户 Id
unreadMessageCount: 10, // 本会话的未读消息数
receivedTime: 1418968547905, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
sentTime: 1418968488063, // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
isTop: false, // 置顶状态
latestMessageId: 608 // 本会话最后一条消息 Id
}
]
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.searchConversations({
conversationTypes: ['PRIVATE'],
objectNames: ['RC:TxtMsg'],
keyword:'hello'
}, function(ret) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 3.1.1 及更高版本
根据会话,搜索本地历史消息。
searchMessages({params}, callback(ret))
conversationType:
targetId:
keyword:
count:
beginTime:
ret:
{
status: 'success',
result: [
{
content: {
text: 'Hello world!',
extra: ''
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
extra: '', // 消息的附加信息,此信息只保存在本地
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '55', // 这里对应消息发送者的 userId
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 参见 发送出的消息状态
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0, // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedStatus: 'LISTENED' // 消息状态(android不支持) 取值范围:UNREAD,READ,LISTENED,DOWNLOADED,RETRIEVED,MULTIPLERECEIVE
isRead:true, //获取是否已读取的状态(ios不支持)
isListened:true, //获取是否已被收听的状态(ios不支持)
isDownload:true, //获取文件是否已经下载的状态(ios不支持)
isRetrieved:false, //获取是否已经被收取过(ios不支持)
isMultipleReceive: false //获取是否被其他端同时接收(ios不支持)
messageUId: '' //消息UID,如果无则显示空字符串
}
]
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.searchMessages({
conversationType: 'PRIVATE',
targetId: '1234',
keyword:'hello'
}, function(ret) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 3.1.1 及更高版本
获取会话列表
会话列表按照时间从前往后排列,如果有置顶会话,则置顶会话在前
getConversationList(callback(ret, err))
ret:
{
status: 'success',
result: [
{
conversationTitle: 'Ironman', // 会话标题
conversationType: 'PRIVATE', // 参见 会话类型 枚举
draft: '', // 文字消息草稿的内容
targetId: 'group001', // 消息目标 Id
latestMessage: {
text: 'Hello world!',
extra: ''
}, // 最后一条消息的内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
sentStatus: 'SENT', // 参见 发送出的消息状态
*notificationStatus: 'NOTIFY', // 会话通知状态,2.0.0将不再提供此字段,可通过 getConversationNotificationStatus 获取
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
receivedStatus: 'READ', // 参见 接收到的消息状态
senderUserId: '55', // 发送消息的用户 Id
unreadMessageCount: 10, // 本会话的未读消息数
receivedTime: 1418968547905, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
sentTime: 1418968488063, // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
isTop: false, // 置顶状态
latestMessageId: 608 // 本会话最后一条消息 Id,
mentionedCount: 2 //本会话里自己被@的消息数量(iOS不支持)
hasUnreadMentioned:true //会话中是否存在被@的消息,在清除会话未读数的时候,会将此状态置成false(android不支持)
}
]
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getConversationList(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
获取置顶会话列表
getTopConversationList(callback(ret))
ret:
{
status: 'success',
result: [
{
conversationTitle: 'Ironman', // 会话标题
conversationType: 'PRIVATE', // 参见 会话类型 枚举
draft: '', // 文字消息草稿的内容
targetId: 'group001', // 消息目标 Id
latestMessage: {
text: 'Hello world!',
extra: ''
}, // 最后一条消息的内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
sentStatus: 'SENT', // 参见 发送出的消息状态
*notificationStatus: 'NOTIFY', // 会话通知状态,2.0.0将不再提供此字段,可通过 getConversationNotificationStatus 获取
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
receivedStatus: 'READ', // 参见 接收到的消息状态
senderUserId: '55', // 发送消息的用户 Id
unreadMessageCount: 10, // 本会话的未读消息数
receivedTime: 1418968547905, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
sentTime: 1418968488063, // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
isTop: false, // 置顶状态
latestMessageId: 608 // 本会话最后一条消息 Id,
mentionedCount: 2 //本会话里自己被@的消息数量(iOS不支持)
hasUnreadMentioned:true //会话中是否存在被@的消息,在清除会话未读数的时候,会将此状态置成false(android不支持)
}
]
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getTopConversationList(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 3.0.7 及更高版本
获取屏蔽消息的会话列表
getBlockedConversationList(params, callback(ret))
conversationType:
ret:
{
status: 'success',
result: [
{
conversationTitle: 'Ironman', // 会话标题
conversationType: 'PRIVATE', // 参见 会话类型 枚举
draft: '', // 文字消息草稿的内容
targetId: 'group001', // 消息目标 Id
latestMessage: {
text: 'Hello world!',
extra: ''
}, // 最后一条消息的内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
sentStatus: 'SENT', // 参见 发送出的消息状态
*notificationStatus: 'NOTIFY', // 会话通知状态,2.0.0将不再提供此字段,可通过 getConversationNotificationStatus 获取
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
receivedStatus: 'READ', // 参见 接收到的消息状态
senderUserId: '55', // 发送消息的用户 Id
unreadMessageCount: 10, // 本会话的未读消息数
receivedTime: 1418968547905, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
sentTime: 1418968488063, // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
isTop: false, // 置顶状态
latestMessageId: 608 // 本会话最后一条消息 Id,
mentionedCount: 2 //本会话里自己被@的消息数量(iOS不支持)
hasUnreadMentioned:true //会话中是否存在被@的消息,在清除会话未读数的时候,会将此状态置成false(android不支持)
}
]
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getBlockedConversationList(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 3.0.7 及更高版本
分页获取会话列表
会话列表按照时间从前往后排列,如果有置顶会话,则置顶会话在前
getConversationListByCount({params},callback(ret, err))
typeList:
count:
startTime:
ret:
{
status: 'success',
result: [
{
conversationTitle: 'Ironman', // 会话标题
conversationType: 'PRIVATE', // 参见 会话类型 枚举
draft: '', // 文字消息草稿的内容
targetId: 'group001', // 消息目标 Id
latestMessage: {
text: 'Hello world!',
extra: ''
}, // 最后一条消息的内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
sentStatus: 'SENT', // 参见 发送出的消息状态
*notificationStatus: 'NOTIFY', // 会话通知状态,2.0.0将不再提供此字段,可通过 getConversationNotificationStatus 获取
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
receivedStatus: 'READ', // 参见 接收到的消息状态
senderUserId: '55', // 发送消息的用户 Id
unreadMessageCount: 10, // 本会话的未读消息数
receivedTime: 1418968547905, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
sentTime: 1418968488063, // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
isTop: false, // 置顶状态
latestMessageId: 608 // 本会话最后一条消息 Id,
mentionedCount: 2 //本会话里自己被@的消息数量(iOS不支持)
hasUnreadMentioned:true //会话中是否存在被@的消息,在清除会话未读数的时候,会将此状态置成false(android不支持)
}
]
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getConversationListByCount(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 3.0.3 及更高版本
获取某一会话信息
getConversation({params}, callback(ret, err))
conversationType:
targetId:
ret:
{
status: 'success',
result: {
conversationTitle: 'Ironman', // 会话标题
conversationType: 'PRIVATE', // 参见 会话类型 枚举
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
draft: '', // 文字消息草稿的内容
targetId: 'group001', // 消息目标 Id
latestMessage: {
text: 'Hello world!',
extra: ''
}, // 最后一条消息的内容
sentStatus: 'SENT', // 参见 发送出的消息状态
*notificationStatus: 'NOTIFY', // 会话通知状态,2.0将不再提供此字段,可通过 getConversationNotificationStatus 获取
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
recievedStatus: 0, // 参见 接收到的消息状态
senderUserId: '55', // 发送消息的用户 Id
unreadMessageCount: 10, // 本会话的未读消息数
receivedTime: 1418968547905, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
sentTime: 1418968488063, // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
isTop: false, // 置顶状态
latestMessageId: 608 // 本会话最后一条消息 Id,
mentionedCount: 2 //本会话里自己被@的消息数量(iOS不支持)
hasUnreadMentioned:true //会话中是否存在被@的消息,在清除会话未读数的时候,会将此状态置成false(android不支持)
}
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getConversation({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
获取某一会话信息数量
getMessageCount({params}, callback(ret, err))
conversationType:
targetId:
ret:
{
status: 'success',
result: {
count: // 数字类型;当前会话消息数
}
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getMessageCount({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统
可提供的 3.0.7 及更高版本
从会话列表中移除某一会话,但是不删除会话内的消息
如果此会话中有新的消息,该会话将重新在会话列表中显示,并显示最近的历史消息
removeConversation({params}, callback(ret, err))
conversationType:
targetId:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.removeConversation({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
清空所有会话及会话消息
clearConversations({params}, callback(ret, err))
conversationTypes:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.clearConversations({
conversationTypes: ['PRIVATE', 'GROUP']
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
设置某一会话为置顶或者取消置顶
setConversationToTop({params}, callback(ret, err))
conversationType:
targetId:
isTop:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.setConversationToTop({
conversationType: 'PRIVATE',
targetId: '9527',
isTop: true
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
获取某一会话的通知状态
getConversationNotificationStatus({params}, callback(ret, err))
conversationType:
targetId:
ret:
{
status: 'success', // 状态码:success / error
result: {
code: 0 // 状态码,0:免打扰 / 1:提醒
notificationStatus: 'DO_NOT_DISTURB' // 参见 会话通知提醒状态 枚举
}
}
err:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getConversationNotificationStatus({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
if (ret.status == 'success')
api.toast({ msg: ret.result.code });
else
api.toast({ msg: err.code });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
设置某一会话的通知状态
setConversationNotificationStatus({params}, callback(ret, err))
conversationType:
targetId:
notificationStatus:
ret:
{
status: 'success', // 状态码:success / error
result: {
code: 0 // 状态码,0:免打扰 / 1:提醒
notificationStatus: "DO_NOT_DISTURB" // 参见 会话通知提醒状态 枚举
}
}
err:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
300003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.setConversationNotificationStatus({
conversationType: 'PRIVATE',
targetId: '9527',
notificationStatus: 'DO_NOT_DISTURB'
}, function(ret, err) {
if (ret.status == 'success')
api.toast({ msg: ret.result.code });
else
api.toast({ msg: err.code });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
获取某一会话的最新消息记录
getLatestMessages({params}, callback(ret, err))
conversationType:
targetId:
count:
ret:
{
status: 'success',
result: [
{
content: {
text: 'Hello world!',
extra: ''
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
extra: '', // 消息的附加信息,此信息只保存在本地
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '55', // 这里对应消息发送者的 userId
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 参见 发送出的消息状态
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0, // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedStatus: 'LISTENED' // 消息状态(android不支持) 取值范围:UNREAD,READ,LISTENED,DOWNLOADED,RETRIEVED,MULTIPLERECEIVE
isRead:true, //获取是否已读取的状态(ios不支持)
isListened:true, //获取是否已被收听的状态(ios不支持)
isDownload:true, //获取文件是否已经下载的状态(ios不支持)
isRetrieved:false, //获取是否已经被收取过(ios不支持)
isMultipleReceive: false //获取是否被其他端同时接收(ios不支持)
messageUId: '' //消息UID,如果无则显示空字符串
}
]
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getLatestMessages({
conversationType: 'PRIVATE',
targetId: '9527',
count: 20
}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
获取某一会话的历史消息记录
getHistoryMessages({params}, callback(ret, err))
conversationType:
targetId:
oldestMessageId:
count:
ret:
{
status: 'success',
result: [
{
content: {
text: 'Hello world!',
extra: ''
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
extra: '', // 消息的附加信息,此信息只保存在本地
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '55', // 这里对应消息发送者的 userId
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 参见 发送出的消息状态
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0, // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedStatus: 'LISTENED' // 消息状态(android不支持) 取值范围:UNREAD,READ,LISTENED,DOWNLOADED,RETRIEVED,MULTIPLERECEIVE
isRead:true, //获取是否已读取的状态(ios不支持)
isListened:true, //获取是否已被收听的状态(ios不支持)
isDownload:true, //获取文件是否已经下载的状态(ios不支持)
isRetrieved:false, //获取是否已经被收取过(ios不支持)
isMultipleReceive: false //获取是否被其他端同时接收(ios不支持)
messageUId: '' //消息UID,如果无则显示空字符串
}
]
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getHistoryMessages({
conversationType: 'PRIVATE',
targetId: '9527',
oldestMessageId: 688,
count: 20
}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
获取某一会话的历史消息记录
getHistoryMessagesForward({params}, callback(ret, err))
conversationType:
targetId:
objectNames:
sentTime:
count:
isForward:
ret:
{
status: 'success',
result: [
{
content: {
text: 'Hello world!',
extra: ''
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
extra: '', // 消息的附加信息,此信息只保存在本地
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '55', // 这里对应消息发送者的 userId
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 参见 发送出的消息状态
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0, // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedStatus: 'LISTENED' // 消息状态(android不支持) 取值范围:UNREAD,READ,LISTENED,DOWNLOADED,RETRIEVED,MULTIPLERECEIVE
isRead:true, //获取是否已读取的状态(ios不支持)
isListened:true, //获取是否已被收听的状态(ios不支持)
isDownload:true, //获取文件是否已经下载的状态(ios不支持)
isRetrieved:false, //获取是否已经被收取过(ios不支持)
isMultipleReceive: false //获取是否被其他端同时接收(ios不支持)
messageUId: '' //消息UID,如果无则显示空字符串
}
]
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getHistoryMessagesForward({
conversationType: 'PRIVATE',
targetId: '9527',
sentTime: 688,
count: 20,
objectNames: ['RC:TxtMsg'],
isForward: false
}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 3.5.8 及更高版本
获取某会话里未读的@消息。
getUnreadMentionedMessages({params}, callback(ret, err))
conversationType:
targetId:
ret:
{
status: 'success',
result: [
{
content: {
text: 'Hello world!',
extra: ''
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
extra: '', // 消息的附加信息,此信息只保存在本地
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '55', // 这里对应消息发送者的 userId
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 参见 发送出的消息状态
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0, // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedStatus: 'LISTENED' // 消息状态(android不支持) 取值范围:UNREAD,READ,LISTENED,DOWNLOADED
isRead:true, //获取是否已读取的状态(ios不支持)
isListened:true, //获取是否已被收听的状态(ios不支持)
isDownload:true, //获取文件是否已经下载的状态(ios不支持)
isRetrieved:false, //获取是否已经被收取过(ios不支持)
isMultipleReceive: false //获取是否被其他端同时接收(ios不支持)
messageUId: '' //消息UID,如果无则显示空字符串
}
]
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getUnreadMentionedMessages({
conversationType: 'GROUP',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 3.1.4 及更高版本
按照消息类型获取历史消息记录
getHistoryMessagesByObjectName({params}, callback(ret, err))
conversationType:
targetId:
objectName:
oldestMessageId:
count:
ret:
{
status: 'success',
result: [
{
content: {
text: 'Hello world!',
extra: ''
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
extra: '', // 消息的附加信息,此信息只保存在本地
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '55', // 这里对应消息发送者的 userId
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 参见 发送出的消息状态
senderUserId: '55', // 发送者 userId
messageId: 608, // 本地消息 Id
sentTime: 1418971531533, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 0, // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedStatus: 'LISTENED' // 消息状态(android不支持) 取值范围:UNREAD,READ,LISTENED,DOWNLOADED,RETRIEVED,MULTIPLERECEIVE
isRead:true, //获取是否已读取的状态(ios不支持)
isListened:true, //获取是否已被收听的状态(ios不支持)
isDownload:true, //获取文件是否已经下载的状态(ios不支持)
isRetrieved:false, //获取是否已经被收取过(ios不支持)
isMultipleReceive: false //获取是否被其他端同时接收(ios不支持)
messageUId: '' //消息UID,如果无则显示空字符串
}
]
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getHistoryMessagesByObjectName({
conversationType: 'PRIVATE',
targetId: '9527',
objectName: 'RC:TxtMsg',
oldestMessageId: 688,
count: 20
}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
删除指定的一条或者一组消息
deleteMessages({params}, callback(ret, err))
messageIds:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.deleteMessages({
messageIds: [688, 689]
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
清空某一会话的所有聊天消息记录
clearMessages({params}, callback(ret, err))
conversationType:
targetId:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.clearMessages({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
撤回消息
recallMessage({params}, callback(ret, err))
messageId:
ret:
{
success: true // 布尔类型;是否成功
messageId: 888 // 数值类型;撤回的消息ID,该消息已经变更为新的消息;(android不支持)
operatorId: '' //字符串类型;发起撤回消息的用户id;(ios不支持)
recallTime: //数值类型; 撤回的时间(毫秒)(ios不支持)
}
err:
{
code: 1, // 数值类型;错误code
}
var rong = api.require('rongCloud2');
rong.recallMessage({
messageId : 888
}, function(ret, err){
if (ret.success) {
alert(JSON.stringify(ret));
}else {
alert(JSON.stringify(err));
}
})
iOS系统,Android系统
可提供的 3.1.2 及更高版本
同步会话阅读状态
syncConversationReadStatus(params, callback(ret))
conversationType:
targetId:
time:
ret:
{
status: , //布尔类型;状态
errorCode: , //数字;错误码;status为false时有值
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.syncConversationReadStatus({conversationType:1,targetId:"2er",time: 1545464616156}, function(ret){
api.alert({msg:JSON.stringify(ret)});
});
iOS 系统,Android 系统
可提供的 3.1.7 及更高版本
监听撤回消息
setOnMessageRecalledListener(callback(ret))
ret:
{
messageId: 888 // 数值类型;被撤回的消息ID
}
var rong = api.require('rongCloud2');
rong.setOnMessageRecalledListener(function(ret){ alert(JSON.stringify(ret));
})
iOS系统,Android系统
可提供的 3.1.2 及更高版本
获取所有未读消息数
getTotalUnreadCount(callback(ret, err))
ret:
{
status: 'success',
result: 12 // 未读消息数
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getTotalUnreadCount(function(ret, err) {
api.toast({ msg: ret.result });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
获取来自某用户(某会话)的未读消息数
getUnreadCount({params}, callback(ret, err))
conversationType:
targetId:
ret:
{
status: 'success',
result: 12 // 未读消息数
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getUnreadCount({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.result });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
获取某(些)会话类型的未读消息数
getUnreadCountByConversationTypes({params}, callback(ret, err))
conversationTypes:
containBlocked:
ret:
{
status: 'success',
result: 12 // 未读消息数
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getUnreadCountByConversationTypes({
conversationTypes: ['PRIVATE', 'GROUP']
}, function(ret, err) {
api.toast({ msg: ret.result });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
设置接收到的消息状态
setMessageReceivedStatus({params}, callback(ret, err))
messageId:
receivedStatus:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.setMessageReceivedStatus({
messageId: '688',
receivedStatus: 'READ'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
清除某一会话的消息未读状态
clearMessagesUnreadStatus({params}, callback(ret, err))
conversationType:
targetId:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.clearMessagesUnreadStatus({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
设置消息的附加信息,此信息只保存在本地
setMessageExtra({params}, callback(ret, err))
messageId:
value:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.setMessageExtra({
messageId: '688',
value: 'extra info'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
获取某一会话的文字消息草稿
getTextMessageDraft({params}, callback(ret, err))
conversationType:
targetId:
ret:
{
status: 'success',
result: 'Hello w' // 草稿的文字内容
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getTextMessageDraft({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.result });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
保存某一会话的文字消息草稿
saveTextMessageDraft({params}, callback(ret, err))
conversationType:
targetId:
content:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.saveTextMessageDraft({
conversationType: 'PRIVATE',
targetId: '9527',
content: 'Hello w'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
清除某一会话的文字消息草稿
clearTextMessageDraft({params}, callback(ret, err))
conversationType:
targetId:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.clearTextMessageDraft({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
音视频来电事件监听
addCallReceiveListener(params)
target:
ret:
{
callSession:{} //JSON对象;与getCallSession接口返回的参数一致,仅当 target 为 didReceiveCall 时有值
remoteNoti:{ //JSON对象;音视频推送通知信息,仅当 target 为 didReceiveCallRemoteNotification 、didCancelCallRemoteNotification时有值
callId:'', //字符串类型;呼入通话的唯一值
inviterUserId:'',//字符串类型;通话邀请者的UserId
userIdList:[], //数组类型;被邀请者的UserId列表
mediaType:'', //字符串类型;通话的媒体类型:audio、video
userDict:{} //JSON对象;远程推送包含的其他扩展信息,didReceiveCallRemoteNotification时不返回此值
}
}
var rong = api.require('rongCloud2');
rong.addCallReceiveListener({
target:'didReceiveCall'
},function(ret){
console.log(JSON.stringify(ret))
});
ios系统,Android系统
可提供的 3.1.7 及更高版本
移除音视频来电事件监听
removeCallReceiveListener(params)
target:
var rong = api.require('rongCloud2');
rong.removeCallReceiveListener({
target:'didReceiveCall'
});
ios系统,Android系统
可提供的 3.1.7 及更高版本
发起音视频通话 (注:android上在发起语音通话时需要麦克风的权限,发起视频通话时需要相机的权限)
startCall(params)
targetId:
conversationType:
mediaType:
userIdList:
extra:
ret:
{
callSession:{} //JSON对象;与getCallSession接口返回的参数一致(android回调中callSession中只有callId字段)
}
var rong = api.require('rongCloud2');
rong.startCall({
targetId:'didReceiveCall',
mediaType:,
conversationType:,
extra:,
userIdList
},function(ret){
console.log(JSON.stringify(ret))
});
iOS系统,Android系统
可提供的 3.1.7 及更高版本
音视频通话事件的监听
addCallSessionListener(params)
target:
ret:
{
userId:'' //字符串类型;用户ID,仅当 target 为 remoteUserDidRing、remoteUserDidInvite 、remoteUserDidJoin、remoteUserDidChangeMediaType、remoteUserDidDisableCamera、remoteUserDidLeft时有值
mediaType:'' //字符串类型;媒体类型,仅当 target 为 remoteUserDidInvite 、remoteUserDidJoin、remoteUserDidChangeMediaType时有值
disabled: //布尔类型;是否关闭摄像头,仅当 target 为 remoteUserDidDisableCamera时有值
reason: //数字类型;挂断原因,仅当 target 为 remoteUserDidLeft时有值 ,取值范围:1-9&11-20:
//己方取消已发出的通话请求、己方拒绝收到的通话请求、己方挂断、己方忙碌、己方未接听、己方不支持当前引擎、己方网络出错、己方摄像头初始化错误,可能是没有打开使用摄像头权限、其他端已经接听
//对方取消已发出的通话请求、对方拒绝收到的通话请求、通话过程对方挂断、对方忙碌、对方未接听、对方引擎不支持、对方网络错误、(ios)己方其他端已接听|(android)im ipc服务已断开、己方被加入黑名单(android不支持)、 己方被降级为观察者(android不支持)
disConnectReason: //数字类型;连接失败的原因;仅当target为didDisconnect时有值;取值范围:1:己方取消已发出的通话请求、2:己方拒绝收到的通话请求、3:己方挂断、4:己方忙碌、5:己方未接听、6:当前引擎不支持、7:己方网络出错、8:己方摄像头初始化错误,可能是没有打开使用摄像头权限、9:其他端已经接听、11:对方取消已发出的通话请求、12:对方拒绝收到的通话请求、13:通话过程对方挂断、14:对方忙碌、15:对方未接听、16:对方引擎不支持、17:对方网络错误、18:im ipc服务已断开
errorCode: //数字类型;错误码,errorDidOccur时返回;取值范围:0-10:成功、网络不可用、已经处于通话中了、无效操作、参数错误、网络不稳定、没提服务请求失败、媒体服务初始化失败、媒体服务未初始化、媒体服务请求超时、未知的媒体服务错误
txQuality: , //数字类型;上行网络质量,(android不支持)networkTxQuality时返回,取值范围如下
rxQuality: //数字类型;下行网络质量,(android不支持)networkTxQuality时返回,,取值范围如下
//0:未知
//1:Excellent
//2:Good
//3:Poor
//4:Bad
//5:VBad
//6:Down
sendLost: //数字类型;发送丢帧率;networkSendLost时返回; (ios不支持)
receiveLost //数字类型;接收丢帧率;networkReceiveLost时返回;(ios不支持)
startTime: 0, //数字类型;通话开始时间; 挂断时有回调
endTime: 0, //数字类型;通话结束时间; 挂断时有回调
callerUserId:'' //字符串;主叫用户id;接听或挂断时有回调
}
var rong = api.require('rongCloud2');
rong.addCallSessionListener({
target:'didConnect'
},function(ret){
console.log(JSON.stringify(ret))
});
ios系统,Android系统
可提供的 3.1.7 及更高版本
移除音视频来电事件监听
removeCallSessionListener(params)
target:
var rong = api.require('rongCloud2');
rong.removeCallSessionListener({
target:'didConnect'
});
ios系统,Android系统
可提供的 3.1.7 及更高版本
获取当前通话实体,通话实体中维护着当前通话的所有信息。
getCallSession(callback(ret))
ret:
{
conversationType:'', //字符串类型;通话的会话类型
callId:'', //字符串类型;通话 ID
targetId:'', //字符串类型;通话的目标会话 ID
multiCall:, //布尔类型;是否是多方通话
extra:'', //字符串类型;通话的扩展信息
callStatus:'', //字符串类型;通话的当前状态 (android不支持)
callerUserId:'', //字符串类型;通话的最初发起人 ID
inviterUserId:'', //字符串类型;邀请当前用户加入通话的邀请者 ID
observerUserList:[], //数组类型;当前的用户列表
selfUserId:'', //字符串类型;自己的 ID
mediaType:'', //字符串类型;通话媒体类型:audio、video
startTime: , //数字类型;呼入/呼出时间
activeTime: , //数字类型;接通时间
disconnectReason:'', //字符串类型;通话挂断原因 (android不支持)
endTime:, //数字类型;结束时间,仅支持 android端
callUserType:'' //字符串类型;用户类型; 1:NORMAL 2:OBSERVER,仅支持 android端
}
var rong = api.require('rongCloud2');
rong.getCallSession(function(ret) {
api.alert({msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 3.1.7 及更高版本
判断当前是否支持音视频通话 (注:android上此接口用来判断音视频引擎是否可用)
isCallEnabled(params,callback(ret))
conversationType:
mediaType:
ret:
{
enabled: //布尔类型;是否支持
}
var rong = api.require('rongCloud2');
var params = {
conversationType:'',
mediaType:'audio'
};
rong.isCallEnabled(params,function(ret){
if(ret.enabled)
alert('支持');
});
iOS系统
可提供的 3.1.7 及更高版本
设置本地视频属性,可用此接口设置本地视频分辨率,设置宽和高替换
setVideoProfile(params)
profile:
swapWidthAndHeight:
已废弃
- 类型:布尔
- 描述:(可选项)是否交换宽和高 (android不支持)
- 默认:false
fps:
cameraDisplayOrientation:
var rong = api.require('rongCloud2');
rong.setVideoProfile({
swapWidthAndHeight:true,
profile:'480P'
});
iOS系统,Android系统
可提供的 3.1.7 及更高版本
设置本地视频属性,是否使用默认美颜
setEnableBeauty(params)
enableBeauty:
var rong = api.require('rongCloud2');
rong.setEnableBeauty({
enableBeauty:true
});
iOS系统,Android系统
可提供的 3.1.7 及更高版本
设接听来电
accept(params)
mediaType:
callId :
var rong = api.require('rongCloud2');
rong.accept({
mediaType:'audio'
});
iOS系统,Android系统
可提供的 3.1.7 及更高版本
挂断
hangup()
var rong = api.require('rongCloud2');
rong.hangup();
iOS系统,Android系统
可提供的 3.1.7 及更高版本
邀请用户加入当前通话 (仅限讨论组和群组)
addParticipants(params)
userIds:
observerUserIds:
var rong = api.require('rongCloud2');
var params = {
userIds : ['1234', '0000']
};
rong.addParticipants(params);
iOS系统,Android系统
可提供的 3.1.7 及更高版本
打开视频区域 (注意:Android如果设置对方窗口时,需要监听到 remoteUserDidJoin 事件之后设置,否则可能导致窗口无法显示的问题)
setVideoView({params})
rect:
{
x: 0, //(可选项)数字类型;地图左上角的 x 坐标(相对于所属的 Window 或 Frame);默认:0
y: 0, //(可选项)数字类型;地图左上角的 y 坐标(相对于所属的 Window 或 Frame);默认:0
w: 320, //(可选项)数字类型;地图的宽度;默认:'auto'
h: 480 //(可选项)数字类型;地图的高度;默认:'auto'
}
userId:
renderModel:
bg:
isMirror:
fixedOn:
fixed:
var rong = api.require('rongCloud2');
rong.setVideoView({
rect: {
x: 0,
y: 0,
w: 320,
h: 300
},
bg: '#ff0000',
renderModel: 'fit',
fixedOn: api.frameName,
fixed: true
});
iOS系统,Android系统
可提供的3.1.7及更高版本
重设打开的视频区域
resetVideoView({params},callback(ret,err))
rect:
{
x: 0, //(可选项)数字类型;地图左上角的 x 坐标(相对于所属的 Window 或 Frame);默认:0
y: 0, //(可选项)数字类型;地图左上角的 y 坐标(相对于所属的 Window 或 Frame);默认:原值
w: 320, //(可选项)数字类型;地图的宽度;默认:'auto'
h: 480 //(可选项)数字类型;地图的高度;默认:'auto'
}
userId:
renderModel:
bg:
animationDuration:
ret:
{
enabled: //布尔类型;是否设置成功
}
err:
{
code: 1 //数字类型;错误码,取值范围:
//1:userID为空
//2:viewView不存在(尚未setVideoView初始化)
}
var rong = api.require('rongCloud2');
rong.resetVideoView({
rect: {
x: 0,
y: 0,
w: 320,
h: 300
},
bg: '#ff0000',
renderModel: 'fit'
});
iOS系统,Android系统
可提供的3.1.7及更高版本
将指定画面窗口从其父窗口带到最上层显示
videoViewBringToFront({params},callback(ret,err))
userId:
ret:
{
enabled: //布尔类型;是否设置成功
}
err:
{
code: 1 //数字类型;错误码,取值范围:
//1:userID为空
//2:viewView不存在(尚未setVideoView初始化)
}
var rong = api.require('rongCloud2');
rong.videoViewBringToFront({
userId: ''
});
iOS系统,Android系统
可提供的3.2.1及更高版本
关闭移除打开的视频区域
removeVideoView({params})
userId:
var rong = api.require('rongCloud2');
rong.removeVideoView({
userId: 'a2'
});
iOS系统,Android系统
可提供的3.1.7及更高版本
添加视频区域的监听
addVideoViewListener(callback(ret))
ret:
{
userId: '' //字符串类型;单击的用户ID
}
var rong = api.require('rongCloud2');
rong.addVideoViewListener(function(ret){
api.alert(JSON.stringify(ret));
});
iOS系统,Android系统
可提供的3.1.7及更高版本
改变当前通话的媒体类型
changeMediaType({params})
mediaType:
var rong = api.require('rongCloud2');
rong.changeMediaType({
mediaType: 'audio'
});
iOS系统,Android系统
可提供的3.1.7及更高版本
是否是静音
isMuted(callback(ret))
ret:
{
isMuted: //布尔类型;是否静音
}
var rong = api.require('rongCloud2');
rong.isMuted(function(ret){
if(ret.isMuted) alert('静音')
});
iOS系统
可提供的3.1.7及更高版本
设置静音
setMuted({params},callback(ret))
muted:
ret:
{
status: //布尔类型;是否设置成功
}
var rong = api.require('rongCloud2');
rong.setMuted({
muted: true
},function(ret){
if(ret.status) alert("设置成功");
});
iOS系统,Android系统
可提供的3.1.7及更高版本
是否打开扬声器
speakerEnabled(callback(ret))
ret:
{
speakerEnabled: //布尔类型;是否是扬声器播放
}
var rong = api.require('rongCloud2');
rong.speakerEnabled(function(ret){
if(ret.speakerEnabled) alert('扬声器')
});
iOS系统
可提供的3.1.7及更高版本
设置扬声器状态
setSpeakerEnabled({params},callback(ret))
speakerEnabled:
ret:
{
status: //布尔类型;是否设置成功
}
var rong = api.require('rongCloud2');
rong.setSpeakerEnabled({
speakerEnabled: true
},function(ret){
if(ret.status) alert('设置成功');
});
iOS系统,Android系统
可提供的3.1.7及更高版本
是否开启摄像头
cameraEnabled(callback(ret))
ret:
{
cameraEnabled: //布尔类型;是否开启摄像头
}
var rong = api.require('rongCloud2');
rong.cameraEnabled(function(ret){
if(ret.cameraEnabled) alert('扬声器')
});
iOS系统
可提供的3.1.7及更高版本
设置打开摄像头
setCameraEnabled({params},callback(ret))
cameraEnabled:
ret:
{
status: //布尔类型;是否设置成功
}
var rong = api.require('rongCloud2');
rong.setCameraEnabled({
cameraEnabled: true
},function(ret){
if(ret.status) alert('设置成功');
});
iOS系统,Android系统
可提供的3.1.7及更高版本
切换摄像头
switchCameraMode(callback(ret))
ret:
{
status: //布尔类型;是否切换成功
}
var rong = api.require('rongCloud2');
rong.switchCameraMode(function(ret){
if(ret.status) alert('切换成功');
});
iOS系统,Android系统
可提供的3.1.7及更高版本
开始声音录制,目前只支持录制wav格式音频文件, 请给出完整沙盒路径+文件名
startAudioRecording({params},callback(ret))
filePath:
ret:
{
status: //数字类型;设置结果
//-1:路径错误
}
var rong = api.require('rongCloud2');
rong.startAudioRecording({
filePath: 'fs://123.wav'
},function(ret){
if(ret.status) alert('设置成功');
});
iOS系统,Android系统
可提供的3.1.7及更高版本
停止录音
stopAudioRecording(callback(ret))
ret:
{
status: //布尔类型;是否停止成功
}
var rong = api.require('rongCloud2');
rong.stopAudioRecording(function(ret){
if(ret.status) alert('停止成功');
});
iOS系统,Android系统
可提供的3.1.7及更高版本
打开美颜
setBeauty({params})
enable:
whitenessLevel:
smoothLevel:
ruddyLevel:
brightLevel:
var rong = api.require('rongCloud2');
rong.setBeauty({
enable: true,
brightLevel: 6,
ruddyLevel: 5,
smoothLevel: 6,
whitenessLevel: 6
});
iOS系统,Android系统
可提供的3.4.0及更高版本
设置滤镜
setBeautyFilter({params})
filter:
var rong = api.require('rongCloud2');
rong.setBeautyFilter({
filter: 'fresh'
});
iOS系统,Android系统
可提供的3.4.0及更高版本
重置美颜和滤镜,重置后所有参数恢复默认值 whitenessLevel = 0 smoothLevel = 0 ruddyLevel = 0 brightLevel = 5 filter = none
resetBeauty()
var rong = api.require('rongCloud2');
rong.resetBeauty();
iOS系统,Android系统
可提供的3.4.0及更高版本
获取当前美颜参数
getCurrentBeautyOption(callback(ret))
ret:
{
whitenessLevel:, //数字类型;美白
smoothLevel:, //数字类型;磨皮
ruddyLevel:, //数字类型;红润
brightLevel:, //数字类型;亮度
}
var rong = api.require('rongCloud2');
rong.getCurrentBeautyOption(function(ret){
api.alert({msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的3.4.0及更高版本
获取当前滤镜
getCurrentBeautyFilter(callback(ret))
ret:
{
filter: //字符串类型;取值范围
//esthetic
//fresh
//romantic
//none
}
var rong = api.require('rongCloud2');
rong.getCurrentBeautyFilter(function(ret){
api.alert({msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的3.4.0及更高版本
获取美颜引擎版本号
getBeautyEngineVersion(callback(ret))
ret:
{
version: //字符串类型; 美颜引擎版本号
}
var rong = api.require('rongCloud2');
rong.getBeautyEngineVersion(function(ret){
api.alert({msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的3.4.0及更高版本
创建讨论组
注意:有关讨论组的7个接口已废弃
createDiscussion({params}, callback(ret, err))
name:
userIdList:
ret:
{
status: 'success', // 状态码:success / error
result: {
discussionId: "1b9f7abe-a5ae-463d-8ff8-d96deaf40b59" // 创建成功的讨论组 Id
}
}
err:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.createDiscussion({
name: 'Ironman, Batman',
userIdList: ['1234', '4321']
}, function(ret, err) {
if (ret.status == 'success')
api.toast({ msg: ret.result.discussionId });
else
api.toast({ msg: err.code });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
获取讨论组信息和设置
getDiscussion({params}, callback(ret, err))
discussionId:
ret:
{
status: 'success', // 状态码:success / error
result: {
creatorId: '55', // 讨论组创建者 Id
id: '1b9f7abe-a5ae-463d-8ff8-d96deaf40b59', //讨论组 Id
name: 'Ironman, Batman', // 讨论组名称
memberIdList: [ '1234', '4321' ], // 成员 Id 列表
inviteStatus: 'OPENED' // 是否公开好友邀请:OPENED / CLOSED,参见 讨论组邀请状态
}
}
err:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getDiscussion({
discussionId: '1b9f7abe-a5ae-463d-8ff8-d96deaf40b59'
}, function(ret, err) {
if (ret.status == 'success')
api.toast({ msg: JSON.stringify(ret.result.discussion) });
else
api.toast({ msg: err.code });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
设置讨论组名称
setDiscussionName({params}, callback(ret, err))
discussionId:
name:
ret:
{
status: 'success' // 状态码:success / error
}
err:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.setDiscussionName({
discussionId: '1b9f7abe-a5ae-463d-8ff8-d96deaf40b59',
name: 'Ironman, Hulk'
}, function(ret, err) {
if (ret.status == 'success')
api.toast({ msg: JSON.stringify(ret.status) });
else
api.toast({ msg: err.code });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
添加一名或者一组用户加入讨论组
addMemberToDiscussion({params}, callback(ret, err))
discussionId:
userIdList:
ret:
{
status: 'success' // 状态码:success / error
}
err:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.addMemberToDiscussion({
discussionId: '1b9f7abe-a5ae-463d-8ff8-d96deaf40b59',
userIdList: ['4567', '7654']
}, function(ret, err) {
if (ret.status == 'success')
api.toast({ msg: JSON.stringify(ret.status) });
else
api.toast({ msg: err.code });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
供创建者将某用户移出讨论组
移出自己或者调用者非讨论组创建者将产生 -1 未知错误
removeMemberFromDiscussion({params}, callback(ret, err))
discussionId:
userId:
ret:
{
status: 'success' // 状态码:success / error
}
err:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.removeMemberFromDiscussion({
discussionId: '1b9f7abe-a5ae-463d-8ff8-d96deaf40b59',
userId: '4567'
}, function(ret, err) {
if (ret.status == 'success')
api.toast({ msg: JSON.stringify(ret.status) });
else
api.toast({ msg: err.code });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
退出当前用户所在的某讨论组
quitDiscussion({params}, callback(ret, err))
discussionId:
ret:
{
status: 'success' // 状态码:success / error
}
err:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.quitDiscussion({
discussionId: '1b9f7abe-a5ae-463d-8ff8-d96deaf40b59'
}, function(ret, err) {
if (ret.status == 'success')
api.toast({ msg: JSON.stringify(ret.status) });
else
api.toast({ msg: err.code });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
设置讨论组成员邀请权限
setDiscussionInviteStatus({params}, callback(ret, err))
discussionId:
inviteStatus:
ret:
{
status: 'success' // 状态码:success / error
}
err:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.setDiscussionInviteStatus({
discussionId: '1b9f7abe-a5ae-463d-8ff8-d96deaf40b59',
inviteStatus: 'OPENED'
}, function(ret, err) {
if (ret.status == 'success')
api.toast({ msg: JSON.stringify(ret.status) });
else
api.toast({ msg: err.code });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
同步当前用户所属的群组信息到融云服务器
注意:此方法已废弃,建议您通过您的App Server进行群组操作。 群组操作的流程,可以参考:http://support.rongcloud.cn/kb/MzY5
syncGroup({params}, callback(ret, err))
groups:
ret:
{
status: 'success' // 状态码:success / error
}
err:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.syncGroup({
groups: [{
groupId: '123',
groupName: 'Ski Club',
portraitUrl: 'http://club.com/ski.jpg'
}, {
groupId: '456',
groupName: 'Diving Club',
portraitUrl: 'http://club.com/diving.jpg'
}]
}, function(ret, err) {
if (ret.status == 'success')
api.toast({ msg: JSON.stringify(ret.status) });
else
api.toast({ msg: err.code });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
当前用户加入某群组
注意:此方法已废弃,建议您通过您的App Server进行群组操作。 群组操作的流程,可以参考:http://support.rongcloud.cn/kb/MzY5
joinGroup({params}, callback(ret, err))
groupId:
groupName:
ret:
{
status: 'success' // 状态码:success / error
}
err:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.joinGroup({
groupId: '123',
groupName: 'Ski Club'
}, function(ret, err) {
if (ret.status == 'success')
api.toast({ msg: JSON.stringify(ret.status) });
else
api.toast({ msg: err.code });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
当前用户退出某群组
注意:此方法已废弃,建议您通过您的App Server进行群组操作。 群组操作的流程,可以参考:http://support.rongcloud.cn/kb/MzY5
quitGroup({params}, callback(ret, err))
groupId:
ret:
{
status: 'success' // 状态码:success / error
}
err:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.quitGroup({
groupId: '123'
}, function(ret, err) {
if (ret.status == 'success')
api.toast({ msg: JSON.stringify(ret.status) });
else
api.toast({ msg: err.code });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
当前用户加入某聊天室
joinChatRoom({params}, callback(ret, err))
chatRoomId:
defMessageCount:
ret:
{
status: 'success' // 状态码:success / error
}
err:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.joinChatRoom({
chatRoomId: '123',
defMessageCount: 20
}, function(ret, err) {
if (ret.status == 'success')
api.toast({ msg: JSON.stringify(ret.status) });
else
api.toast({ msg: err.code });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
当前用户退出某聊天室
quitChatRoom({params}, callback(ret, err))
chatRoomId:
ret:
{
status: 'success' // 状态码:success / error
}
err:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.quitChatRoom({
chatRoomId: '123'
}, function(ret, err) {
if (ret.status == 'success')
api.toast({ msg: JSON.stringify(ret.status) });
else
api.toast({ msg: err.code });
})
iOS系统,Android系统
可提供的 1.1.0 及更高版本
获取连接状态
getConnectionStatus(callback(ret, err))
ret:
{
status: 'success',
result:
{
connectionStatus: 'CONNECTED' // 连接状态
}
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getConnectionStatus(function(ret, err) {
api.toast({ msg: ret.result.connectionStatus });
})
iOS系统,Android系统
可提供的 2.0.0 及更高版本
注销登录(不再接收 Push 消息)
logout(callback(ret, err))
ret:
{
status: 'success' // 状态码:success
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.logout(function(ret, err) {
if (ret.status == 'error')
api.toast({ msg: err.code });
}); // 断开,且不再接收 Push
iOS系统,Android系统
可提供的 2.0.0 及更高版本
获取历史消息记录(特别说明:调用此方法需要开启历史消息漫游;当用户因换设备或重装app导致本地本地存储丢失的情况,可用此方法获取记录;此方法返回值中messageId均为0,融云服务器不会保存此值)
此方法从服务器端获取之前的历史消息,但是必须先开通历史消息云存储功能。 例如,本地会话中有10条消息,您想拉取更多保存在服务器的消息的话,recordTime应传入最早的消息的发送时间戳,count传入1~20之间的数值。
getRemoteHistoryMessages({params}, callback(ret, err))
conversationType:
targetId:
dateTime :
count:
ret:
{
status: 'success',
result: [
{
content: {
text: 'Hello world!',
extra: ''
}, // 消息内容
readReceiptInfo:{ // 注:如果此字段无值,则返回空
hasRespond:true, //是否已经发送回执
isReceiptRequestMessage:true,//是否需要回执消息
userIdList:{}, //发送回执的用户ID列表 (android不支持)
userIds:[] //json数组类型;发送回执的用户ID和时间戳列表 (ios不支持)
},
extra: '', // 消息的附加信息,此信息只保存在本地
conversationType: 'PRIVATE', // 参见 会话类型 枚举
messageDirection: 'SEND', // 消息方向:SEND 或者 RECEIVE
targetId: '55', // 这里对应消息发送者的 userId
objectName: 'RC:TxtMsg', // 消息类型,参见 http://docs.rongcloud.cn/android_message.html#_内置内容类消息
sentStatus: 'SENDING', // 发送状态:SENDING, SENT 或 FAILED
senderUserId: '55', // 发送者 userId
messageId: 0, // 融云服务器不保存此值,返回值均为0
sentTime: 1444446587902, // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedTime: 1444446598989, // 收到消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数
receivedStatus: 'LISTENED' // 消息状态(android不支持) 取值范围:UNREAD,READ,LISTENED,DOWNLOADED,RETRIEVED,MULTIPLERECEIVE
isRead:true, //获取是否已读取的状态(ios不支持)
isListened:true, //获取是否已被收听的状态(ios不支持)
isDownload:true, //获取文件是否已经下载的状态(ios不支持)
isRetrieved:false, //获取是否已经被收取过(ios不支持)
isMultipleReceive: false //获取是否被其他端同时接收(ios不支持)
}
]
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getRemoteHistoryMessages({
conversationType: 'PRIVATE',
targetId: '9527',
dateTime: 1418971531533,
count: 20
}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 2.0.0 及更高版本
将某个用户加到黑名单中
addToBlacklist({params}, callback(ret, err))
userId:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.addToBlacklist({
userId: '688'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 2.0.0 及更高版本
将个某用户从黑名单中移出
removeFromBlacklist({params}, callback(ret, err))
userId:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.removeFromBlacklist({
userId: '688'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 2.0.0 及更高版本
获取某用户是否在黑名单中
getBlacklistStatus({params}, callback(ret, err))
userId:
ret:
{
status: 'success', // 状态码:success / error
result: 1 // 1-不在黑名单;0-在黑名单
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getBlacklistStatus({
userId: '688'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 2.0.0 及更高版本
获取当前用户的黑名单列表
getBlacklist(callback(ret))
ret:
{
status: 'success' ,// 状态码:success / error
result: ['aaa','bbb']
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getBlacklist(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 2.0.0 及更高版本
设置消息通知免打扰时间,此方法会屏蔽该会话在该时间段的远程推送;
setNotificationQuietHours({params}, callback(ret, err))
startTime:
spanMinutes :
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.setNotificationQuietHours({
startTime: '22:00:00',
spanMinutes: 6
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 2.0.0 及更高版本
移除消息通知免打扰时间
removeNotificationQuietHours(callback(ret, err))
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.removeNotificationQuietHours(function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 2.0.0 及更高版本
获取消息通知免打扰时间
getNotificationQuietHours(callback(ret))
ret:
{
status: 'success' , // 状态码:success / error
result: {
startTime: "22:00:00", // 起始时间
spanMinutes: 6 // 间隔分钟数
}
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getNotificationQuietHours(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 2.0.0 及更高版本
设置消息发送状态
setMessageSentStatus({params}, callback(ret, err))
messageId:
sentStatus :
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.setMessageSentStatus({
messageId: 8,
sentStatus: 'READ'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 2.0.0 及更高版本
向会话中发送正在输入的状态。
注意:在 6 秒之内,如果同一个用户在同一个会话中多次调用此接口发送正在输入的状态,为保证产品体验和网络优化,将只有最开始的一次生效。目前本接口仅支持单聊。
sendTypingStatus({params})
conversationType:
targetId:
objectName:
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.sendTypingStatus({
conversationType: 'PRIVATE',
targetId: '9527',
objectName: 'RC:TxtMsg'
});
iOS系统,Android系统
可提供的 3.0.6 及更高版本
监听对方输入状态
addTypingStatusListener(callback(ret))
ret:
{
conversationType: , //字符串类型;会话类型
targetId: , //字符串类型;会话目标ID
userTypingStatusList:[] //数字类型;正在输入的用户列表
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.addTypingStatusListener(function(ret){
api.alert({msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 3.0.6 及更高版本
如果在会话中收到了回执请求,接收者需要在合适的时机响应该请求,以通知发送者自己已经阅读了该消息。
sendReadReceiptResponse(params, callback(ret))
conversationType:
targetId:
messageId:
ret:
{
status: , //布尔类型;状态
errorCode: , //数字;错误码;status为false时有值
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.sendReadReceiptResponse({messageId:1,targetId:"2er"}, function(ret){
api.alert({msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 3.1.7 及更高版本
发送单聊中消息已读的回执
sendReadReceiptMessage(params, callback(ret))
targetId:
timestamp:
ret:
{
status: , //布尔类型;状态
errorCode: , //数字;错误码;status为false时有值
}
var rong = api.require('rongCloud2');
rong.sendReadReceiptMessage({targetId:1}, function(ret){
api.alert({msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 3.1.9 及更高版本
添加收到已读回执的监听
addReadReceiptListener(callback(ret))
ret:
{
tId: //字符串类型;会话 id
messageTime: //数字类型;已阅读的最后一条消息的 sendTime
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.addReceiveReadReceiptListener(function(ret){
api.alert({msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 3.1.9 及更高版本
发起群组消息回执请求。只能对自己发送的消息发起消息回执请求。
此功能目前仅在 GROUP 类型的会话中开放。用户可以对自己发送的消息发起阅读回执请求,发起后可以看到有多少人阅读过这条消息。
sendReadReceiptRequest(params, callback(ret))
messageId:
ret:
{
status: , //布尔类型;状态
errorCode: , //数字;错误码;status为false时有值
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.sendReadReceiptRequest({messageId:1}, function(ret){
api.alert({msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 3.1.7 及更高版本
添加消息回执监听
您需要设置消息回执监听,以此来接收回执消息并更新消息的显示。
addReadReceiptListener(params, callback(ret))
target:
ret:
{
conversationType: //字符串类型;会话类型;
targetId: //字符串类型;会话 id
messageUId: //字符串类型;当target为onMessageReceiptResponse表示收到回执响应的消息的 uId,当target为onMessageReceiptRequest表示请求已读回执的消息 uId
respondUserIdList: //数组类型;当target为onMessageReceiptResponse时有值;会话中响应了此消息的用户列表;其内部为JSON类型,其中 userId: 用户 id ; time: 响应时间
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.addReadReceiptListener(function(ret){
api.alert({msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 3.1.7 及更高版本
移除消息回执监听
removeReadReceiptListener(params)
target:
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.removeReadReceiptListener(function(ret){
api.alert({msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 3.1.7 及更高版本
获取当前连接用户的信息
getCurrentUserId(callback(ret, err))
ret:
{
status: 'success', // 状态码:success / error
result: 'apple' // 当前连接用户
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.getCurrentUserId(function(ret, err) {
api.toast({ msg: ret.result });
})
iOS系统,Android系统
可提供的 2.0.0 及更高版本
设置本地消息不提示
disableLocalNotification(callback(ret, err))
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('rongCloud2');
// 之前调用 init 和 connect 的代码省略
rong.disableLocalNotification(function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 2.0.0 及更高版本
##会话类型
区分不同的会话形式,字符串类型
###取值范围
iOS系统,Android系统
可提供的 1.1.0 及更高版本
##会话通知提醒状态
会话通知提醒的状态,开启或者关闭,字符串类型
###取值范围
iOS系统,Android系统
可提供的 1.1.0 及更高版本
##讨论组邀请状态
讨论组邀请状态,开放或者关闭,字符串类型
###取值范围
iOS系统,Android系统
可提供的 1.1.0 及更高版本
##连接状态
连接状态,字符串类型
###取值范围
iOS系统,Android系统
可提供的 2.0.0 及更高版本
##发送出的消息状态
连接状态,字符串类型
###取值范围
iOS系统,Android系统
可提供的 2.0.0 及更高版本
##接收到的消息状态
接收到的消息状态,字符串类型
###取值范围
iOS系统,Android系统
可提供的 2.0.0 及更高版本
为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。