init connect disconnect logout setConnectionStatusListener getConnectionStatus getCurrentUserId setServerInfo
sendTextMessage sendImageMessage sendVoiceMessage sendLocationMessage sendRichContentMessage sendCommandNotificationMessage sendCommandMessage setOnReceiveMessageListener getOfflineMessageDuration setOfflineMessageDuration addReadReceiptReceived configNotificationHint setMessageAttachedUserInfo
getConversationNotificationStatus setConversationNotificationStatus disableLocalNotification enableLocalNotification
getConversationList getConversationListByCount getConversation clearConversations removeConversation setConversationToTop getTopConversationList getMessageCount getBlockedConversationList
getLatestMessages getHistoryMessages getHistoryMessagesByObjectName getRemoteHistoryMessages deleteMessages clearMessages searchConversations searchMessages cleanHistoryMessages
setMessageReceivedStatus clearMessagesUnreadStatus setMessageExtra setMessageSentStatus sendTypingStatus addTypingStatusListener
createDiscussion getDiscussion setDiscussionName addMemberToDiscussion removeMemberFromDiscussion quitDiscussion setDiscussionInviteStatus
openConversationList openConversation configChatButtons configChat close configGroupChat setUserAvatar addAvatarListener addNeedAvatarListener configChatSubTitle refreshUserInfoCache startSingleCall startMultiCall addParticipants getCallSession setVideoProfile checkDrawOverlaysPermission addRTCCallListener
注意:本插件不支持融云音视频3.0服务,只支持2.0服务。
注意:本插件从1.4.0开始仅支持RTC4.0及以上服务
注意:Android端集成了高德地图sdk,受限于google play平台的更新机制,使用该插件存在上架google play被拒的可能,可使用UIRongCloudWithoutLocation(该插件不支持位置发送)
本插件封装了一些UIRongCloud插件的一些UI界面
融云 Rong Cloud 是国内首家专业的即时通讯云服务提供商,专注为互联网、移动互联网开发者提供即时通讯基础能力和云端服务。通过融云平台,开发者不必搭建服务端硬件环境,就可以将即时通讯、实时网络能力快速集成至应用中。
UIRongCloud 封装了融云即时通讯能力库 IMKit SDK 的 API,集成了一些UI界面。
#注意:
UIRongCloud 是针对对UI和功能需求不那么高的开发者推出的插件。如果你的项目对UI和功能要求很深,请在充分调研本插件是否满足需求后再决定使用。本插件提供的UI接口不满足需求,建议使用 rongCloud2 插件,让前端去实现UI部分。UIRongCloud 插件就是基于 rongCloud2 提供的接口基础上扩展了UI相关的部分接口。请在项目启动前做好调研评估后再决定是否使用本插件。
使用 UIRongCloud 插件之前,请先 注册 融云的开发者帐号并申请创建 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参考 YonBuilder移动开发 平台关于后台运行权限的配置。
融云默认使用自己平台的推送服务,由于该推送服务属于应用级别的,所以可能受到系统平台的限制,建议您在使用时,在设置里打开自启动权限和通知权限,或者勾选“信任此应用”等,以提高推送到达率
集成第三方推送(使用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,使用方式为融云初始化成功后再初始化 huaweiPush 插件即可,huaweiPush插件初始化可参考文档
thirdpartPush 下载地址:
如果要集成推送服务,需要在config中进行如下配置
<intent-filter>
<action name="android.intent.action.VIEW" />
<category name="android.intent.category.DEFAULT" />
<data host="你的包名" pathPrefix="/push_message" scheme="rong" />
</intent-filter>
初始化融云 SDK,调用 connect 连接前务必保证调用此方法
注:android init接口在APP启动之后只允许调用一次
调用前请在 config.xml 中设置内容如下:
<feature name="UIRongCloud">
<param name="appKey" value="此处填写 App Key 值" />
<!-- 通知通道名称,适配 Android 8.0+ 通知机制,该字段仅对Android有效 -->
<param name="notificationChannelName" value="" />
<!-- 通知通道ID,适配 Android 8.0+ 通知机制,该字段仅对Android有效-->
<param name="notificationChannelId" value=""/>
</feature>
其中 value 的值请替换为您在融云开发者平台上申请的 App Key 值
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('UIRongCloud');
rong.init(function(ret, err) {
if (ret.status == 'error')
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
设置私有部署的导航服务器和媒体服务器地址。 此方法要在 init() 前使用 可以支持设置 http://cn.xxx.com 或者 cn.xxx.com 如果设置成 cn.xxx.com,sdk 会组装成并仅支持 http:// 协议格式。 支持传入多个导航, 多个导航地址之间须以分号 ; 分隔
setServerInfo({params})
naviServer:
fileServer:
var rong = api.require('UIRongCloud');
rong.setServerInfo({
naviServer:'',
fileServer:''
});
Android系统,iOS系统
可提供的 1.2.1 及更高版本
连接融云 IM 服务器,进行后续各种方法操作前务必要先调用此方法
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('UIRongCloud');
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.0.0 及更高版本
断开连接
disconnect({params}, callback(ret, err))
isReceivePush:
ret:
{
status: 'success' // 状态码:success
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.disconnect({
isReceivePush: true
}, function(ret, err) {
if ('success' == ret.status) {
api.toast({ msg: '断开连接成功!' });
}
}); // 断开,且不再接收 Push
iOS系统,Android系统
可提供的 1.0.0 及更高版本
注销登录(不再接收 Push 消息)
logout(callback(ret, err))
ret:
{
status: 'success' // 状态码:success
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.logout(function(ret, err) {
if (ret.status == 'error')
api.toast({ msg: err.code });
}); // 断开,且不再接收 Push
iOS系统,Android系统
可提供的 1.0.0 及更高版本
设置连接状态变化的监听器,请在调用 init 方法之后,调用 connect 方法之前设置
setConnectionStatusListener(callback(ret, err))
ret:
{
result:
{
connectionStatus: 'CONNECTED' // 连接状态
}
}
var rong = api.require('UIRongCloud');
// 之前调用 init 的代码省略
rong.setConnectionStatusListener(function(ret, err) {
api.toast({ msg: ret.result.connectionStatus });
});
// 之后调用 connect 的代码省略
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取连接状态
getConnectionStatus(callback(ret, err))
ret:
{
status: 'success',
result:
{
connectionStatus: 'CONNECTED' // 连接状态
}
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.getConnectionStatus(function(ret, err) {
api.toast({ msg: ret.result.connectionStatus });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取当前连接用户的信息
getCurrentUserId(callback(ret, err))
ret:
{
status: 'success', // 状态码:success / error
result: 'apple' // 当前连接用户
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.getCurrentUserId(function(ret, err) {
api.toast({ msg: ret.result });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
发送文字消息
sendTextMessage({params}, callback(ret, err))
conversationType:
targetId:
text:
extra:
mentionedInfo:
type:"all" //(可选项) 字符串类型;@消息类型,默认值:all;取值范围:(all,part);all为@群组里所有人;part为@部分人,
userIdList:['123'] //字符串类型的数组;用户id;当type为part时,需要填写此字段;
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / success / error
result:
{
message:
{
content: {
text: 'Hello world!',
extra: ''
}, // 消息内容
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 秒开始到现在的毫秒数
}
}
}
成功:
{
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('UIRongCloud');
// 之前调用 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.0.0 及更高版本
发送语音消息
sendVoiceMessage({params}, callback(ret, err))
conversationType:
targetId:
voicePath:
duration:
extra:
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / success / error
result:
{
message:
{
content: {
voicePath: '/xxx/xxx/voice.amr',
duration: 5,
extra: ''
}, // 消息内容
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 秒开始到现在的毫秒数
}
}
}
成功:
{
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('UIRongCloud');
// 之前调用 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.0.0 及更高版本
发送图片消息
sendImageMessage({params}, callback(ret, err))
conversationType:
targetId:
imagePath:
extra:
isFull:
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / progress / success / error
result:
{
message:
{
content: {
imageUrl: '/xxx/xxx/image.jpg',
thumbPath: '/xxx/xxx/thumb.jpg',
extra: ''
}, // 消息内容
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 秒开始到现在的毫秒数
}
}
}
发送中:
{
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('UIRongCloud');
// 之前调用 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.0.0 及更高版本
发送图文消息
sendRichContentMessage({params}, callback(ret, err))
conversationType:
targetId:
title:
description:
imageUrl:
url:
extra:
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: ''
}, // 消息内容
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 秒开始到现在的毫秒数
}
}
}
成功:
{
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('UIRongCloud');
// 之前调用 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.0.0 及更高版本
发送位置消息
sendLocationMessage({params}, callback(ret, err))
conversationType:
targetId:
latitude:
longitude:
poi:
imagePath:
extra:
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / progress / success / error
result:
{
message:
{
content: {
latitude: 39.9139
longitude: 116.3917
poi: '北京市朝阳区北苑路北辰泰岳大厦',
imagePath: '/xxx/xxx/location.jpg'
extra: ''
}, // 消息内容
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 秒开始到现在的毫秒数
}
}
}
发送中:
{
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('UIRongCloud');
// 之前调用 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.0.0 及更高版本
发送命令消息,可以用来实现任何自定义消息的发送
sendCommandNotificationMessage({params}, callback(ret, err))
conversationType:
targetId:
name:
data:
ret:
发送准备:
{
status: 'prepare', // 状态码:prepare / success / error
result:
{
message:
{
content: {
name: 'AddFriend',
data: '{\"inviteUserId\":123}'
}, // 消息内容
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 秒开始到现在的毫秒数
}
}
}
成功:
{
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('UIRongCloud');
// 之前调用 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.0.0 及更高版本
发送命令消息,您需要这种类型的消息时可以直接使用,不需要再自定义。此消息不保存、不计数。
sendCommandMessage({params}, callback(ret, err))
conversationType:
targetId:
name:
data:
ret:
类型:JSON 对象
描述:返回的消息内容。发送准备时,提供所有消息信息;之后,result 中将只返回 message.messageId 等必要相关的内容
内部字段:
发送准备:
{
status: 'prepare', // 状态码:prepare / success / error
result:
{
message:
{
content: {
name: 'AddFriend',
data: '{\"inviteUserId\":123}'
}, // 消息内容
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 秒开始到现在的毫秒数
}
}
}
{
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('UIRongCloud');
// 之前调用 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.0.0 及更高版本
设置接收消息的监听器,请在调用 init 方法之后,调用 connect 方法之前设置
所有接收到的消息、通知、状态都经由此处设置的监听器处理。包括私聊消息、讨论组消息、群组消息、聊天室消息以及各种其他消息、通知、状态等
setOnReceiveMessageListener(callback(ret, err))
ret:
{
result: {
message:{
content: { //JSON对象;消息内容
text: 'Hello world!',
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: 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不支持)
},
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('UIRongCloud');
// 之前调用 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.0.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('UIRongCloud');
rong.getOfflineMessageDuration(function(ret, err) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.1.1 及更高版本
设置当前用户离线消息存储时间
setOfflineMessageDuration(params, callback(ret, err))
duration:
ret:
status: true //布尔类型;获取到的状态
err:
errCode: '' //数字类型;错误码;详情参见:https://www.rongcloud.cn/docs/status_code.html#android_ios_code;【注:Android如果错误码返回26002,请联系融云官方,在后台进行配置。】
var rong = api.require('UIRongCloud');
rong.setOfflineMessageDuration({duration:2}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.1.1 及更高版本
设置消息回执监听
addReadReceiptReceived(callback(ret))
ret:
{
status: 'success',
result:
{
conversationType: 'PRIVATE', // 参见 会话类型 枚举
targetId: 'group001', // 消息目标 Id
senderUserId: '55', // 发送消息的用户 Id(android 不支持)
receivedTime: 1418971531533 // 发送消息的时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数(android 不支持)
}
}
var rong = api.require('UIRongCloud');
rong.addReadReceiptReceived(function(ret) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.1.5 及更高版本
配置推送相关参数
configNotificationHint({params})
alertTitle:
showDetail:
var rong = api.require('UIRongCloud');
rong.configNotificationHint({
alertTitle:,
showDetail:true
});
iOS系统、android系统
可提供的 1.1.0 及更高版本
设置是否将用户信息携带到消息中
setMessageAttachedUserInfo({params})
attached:
var rong = api.require('UIRongCloud');
rong.setMessageAttachedUserInfo({
attached:true
});
iOS系统、android系统
可提供的 1.1.0 及更高版本
获取会话列表
会话列表按照时间从前往后排列,如果有置顶会话,则置顶会话在前
注: 此接口获取当前用户本地会话列表的默认方法,该方法返回的是以下类型的会话列表:私聊,群组,讨论组,系统会话;当更换设备或者清除缓存后,拉取到的是暂存在融云服务器中该账号当天收发过消息的会话列表。
getConversationList(callback(ret))
ret:
{
status: 'success',
result: [
{
conversationTitle: 'Ironman', // 会话标题
conversationType: 'PRIVATE', // 参见 会话类型 枚举
draft: '', // 文字消息草稿的内容
targetId: 'group001', // 消息目标 Id
latestMessage: {
text: 'Hello world!',
extra: ''
}, // 最后一条消息的内容
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('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.getConversationList(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 1.0.4 及更高版本
分页获取会话列表
会话列表按照时间从前往后排列,如果有置顶会话,则置顶会话在前
getConversationListByCount({params},callback(ret))
typeList:
count:
startTime:
ret:
{
status: 'success',
result: [
{
conversationTitle: 'Ironman', // 会话标题
conversationType: 'PRIVATE', // 参见 会话类型 枚举
draft: '', // 文字消息草稿的内容
targetId: 'group001', // 消息目标 Id
latestMessage: {
text: 'Hello world!',
extra: ''
}, // 最后一条消息的内容
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('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.getConversationListByCount(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 1.0.4 及更高版本
获取某一会话信息
getConversation({params}, callback(ret))
conversationType:
targetId:
ret:
{
status: 'success',
result: {
conversationTitle: 'Ironman', // 会话标题
conversationType: 'PRIVATE', // 参见 会话类型 枚举
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
}
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.getConversation({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 1.0.4 及更高版本
清空所有会话及会话消息
clearConversations({params}, callback(ret))
conversationTypes:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.clearConversations({
conversationTypes: ['PRIVATE', 'GROUP']
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.4 及更高版本
从会话列表中移除某一会话,但是不删除会话内的消息
如果此会话中有新的消息,该会话将重新在会话列表中显示,并显示最近的历史消息
removeConversation({params}, callback(ret))
conversationType:
targetId:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.removeConversation({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.4 及更高版本
获取置顶会话列表
getTopConversationList(callback(ret))
ret:
{
status: 'success',
result: [
{
conversationTitle: 'Ironman', // 会话标题
conversationType: 'PRIVATE', // 参见 会话类型 枚举
draft: '', // 文字消息草稿的内容
targetId: 'group001', // 消息目标 Id
latestMessage: {
text: 'Hello world!',
extra: ''
}, // 最后一条消息的内容
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('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.getTopConversationList(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 1.0.4 及更高版本
获取某一会话信息数量
getMessageCount({params}, callback(ret, err))
conversationType:
targetId:
ret:
{
status: 'success',
result: {
count: // 数字类型;当前会话消息数
}
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.getMessageCount({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统
可提供的 1.0.4 及更高版本
获取屏蔽消息的会话列表
getBlockedConversationList(params, callback(ret))
conversationType:
ret:
{
status: 'success',
result: [
{
conversationTitle: 'Ironman', // 会话标题
conversationType: 'PRIVATE', // 参见 会话类型 枚举
draft: '', // 文字消息草稿的内容
targetId: 'group001', // 消息目标 Id
latestMessage: {
text: 'Hello world!',
extra: ''
}, // 最后一条消息的内容
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('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.getBlockedConversationList(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 1.0.4 及更高版本
获取某一会话的通知状态
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('UIRongCloud');
// 之前调用 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.0.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('UIRongCloud');
// 之前调用 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.0.0 及更高版本
设置本地消息不提示
disableLocalNotification(callback(ret, err))
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.disableLocalNotification(function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
设置本地消息提示
enableLocalNotification(callback(ret, err))
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.enableLocalNotification(function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取某一会话的最新消息记录
getLatestMessages({params}, callback(ret, err))
conversationType:
targetId:
count:
ret:
{
status: 'success',
result: [
{
content: {
text: 'Hello world!',
extra: ''
}, // 消息内容
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不支持)
}
]
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.getLatestMessages({
conversationType: 'PRIVATE',
targetId: '9527',
count: 20
}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取某一会话的历史消息记录
getHistoryMessages({params}, callback(ret, err))
conversationType:
targetId:
oldestMessageId:
count:
ret:
{
status: 'success',
result: [
{
content: {
text: 'Hello world!',
extra: ''
}, // 消息内容
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不支持)
}
]
}
var rong = api.require('UIRongCloud');
// 之前调用 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.0.0 及更高版本
按照消息类型获取历史消息记录
getHistoryMessagesByObjectName({params}, callback(ret, err))
conversationType:
targetId:
objectName:
oldestMessageId:
count:
ret:
{
status: 'success',
result: [
{
content: {
text: 'Hello world!',
extra: ''
}, // 消息内容
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不支持)
}
]
}
var rong = api.require('UIRongCloud');
// 之前调用 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.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: ''
}, // 消息内容
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('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.getRemoteHistoryMessages({
conversationType: 'PRIVATE',
targetId: '9527',
dateTime: 1418971531533,
count: 20
}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
删除指定的一条或者一组消息
deleteMessages({params}, callback(ret, err))
messageIds:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.deleteMessages({
messageIds: [688, 689]
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
清空某一会话的所有聊天消息记录
clearMessages({params}, callback(ret, err))
conversationType:
targetId:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.clearMessages({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
搜索本地历史消息
searchConversations({params}, callback(ret))
conversationTypes:
objectNames:
keyword:
ret:
{
status: 'success',
result: [
{
conversationTitle: 'Ironman', // 会话标题
conversationType: 'PRIVATE', // 参见 会话类型 枚举
draft: '', // 文字消息草稿的内容
targetId: 'group001', // 消息目标 Id
latestMessage: {
text: 'Hello world!',
extra: ''
}, // 最后一条消息的内容
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('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.searchConversations({
conversationTypes: ['PRIVATE'],
objectNames: ['RC:TxtMsg'],
keyword:'hello'
}, function(ret) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.9 及更高版本
根据会话,搜索本地历史消息。
searchMessages({params}, callback(ret))
conversationType:
targetId:
keyword:
count:
beginTime:
ret:
{
status: 'success',
result: [
{
content: {
text: 'Hello world!',
extra: ''
}, // 消息内容
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不支持)
}
]
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.searchMessages({
conversationType: 'PRIVATE',
targetId: '1234',
keyword:'hello'
}, function(ret) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.9 及更高版本
清空指定时间戳之前的历史消息 Notes:此方法从服务器端清除历史消息,但是必须先开通历史消息云存储功能。
clearMessages({params}, callback(ret, err))
conversationType:
targetId:
recordTime:
cleanRemote
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.cleanHistoryMessages({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取所有未读消息数
getTotalUnreadCount(callback(ret, err))
ret:
{
status: 'success',
result: 12 // 未读消息数
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.getTotalUnreadCount(function(ret, err) {
api.toast({ msg: ret.result });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取来自某用户(某会话)的未读消息数
getUnreadCount({params}, callback(ret, err))
conversationType:
targetId:
ret:
{
status: 'success',
result: 12 // 未读消息数
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.getUnreadCount({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.result });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取某(些)会话类型的未读消息数
getUnreadCountByConversationTypes({params}, callback(ret, err))
conversationTypes:
ret:
{
status: 'success',
result: 12 // 未读消息数
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.getUnreadCountByConversationTypes({
conversationTypes: ['PRIVATE', 'GROUP']
}, function(ret, err) {
api.toast({ msg: ret.result });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
设置接收到的消息状态
setMessageReceivedStatus({params}, callback(ret, err))
messageId:
receivedStatus:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.setMessageReceivedStatus({
messageId: '688',
receivedStatus: 'READ'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
清除某一会话的消息未读状态
clearMessagesUnreadStatus({params}, callback(ret, err))
conversationType:
targetId:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.clearMessagesUnreadStatus({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
设置消息的附加信息,此信息只保存在本地
setMessageExtra({params}, callback(ret, err))
messageId:
value:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.setMessageExtra({
messageId: '688',
value: 'extra info'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
设置消息发送状态
setMessageSentStatus({params}, callback(ret, err))
messageId:
sentStatus :
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.setMessageSentStatus({
messageId: 8,
sentStatus: 'READ'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
向会话中发送正在输入的状态。
注意:在 6 秒之内,如果同一个用户在同一个会话中多次调用此接口发送正在输入的状态,为保证产品体验和网络优化,将只有最开始的一次生效。目前本接口仅支持单聊。
sendTypingStatus({params})
conversationType:
targetId:
objectName:
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.sendTypingStatus({
conversationType: 'PRIVATE',
targetId: '9527',
objectName: 'RC:TxtMsg'
});
iOS系统,Android系统
可提供的 1.0.6 及更高版本
监听对方输入状态
注:android目前只能监听到发送文本消息的监听
addTypingStatusListener(callback(ret))
ret:
{
conversationType: , //字符串类型;会话类型
targetId: , //字符串类型;会话目标ID
userTypingStatusList:[] //数字类型;正在输入的用户列表
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.addTypingStatusListener(function(ret){
api.alert({msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 1.0.6 及更高版本
获取某一会话的文字消息草稿
getTextMessageDraft({params}, callback(ret, err))
conversationType:
targetId:
ret:
{
status: 'success',
result: 'Hello w' // 草稿的文字内容
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.getTextMessageDraft({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.result });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
保存某一会话的文字消息草稿
saveTextMessageDraft({params}, callback(ret, err))
conversationType:
targetId:
content:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.saveTextMessageDraft({
conversationType: 'PRIVATE',
targetId: '9527',
content: 'Hello w'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
清除某一会话的文字消息草稿
clearTextMessageDraft({params}, callback(ret, err))
conversationType:
targetId:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.clearTextMessageDraft({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
创建讨论组
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('UIRongCloud');
// 之前调用 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.0.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('UIRongCloud');
// 之前调用 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.0.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('UIRongCloud');
// 之前调用 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.0.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('UIRongCloud');
// 之前调用 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.0.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('UIRongCloud');
// 之前调用 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.0.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('UIRongCloud');
// 之前调用 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.0.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('UIRongCloud');
// 之前调用 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.0.0 及更高版本
设置钱包页面的样式,请在打开红包之前设置。融云红包服务已下架
注意:使用此接口需要下载 RCRedWallet 插件,然后上传自定义插件并勾选。
setWalletStyles({params})
themeFontSize:
NavTitfontSize:
pageChargeFont:
pageTitleStr:
themePageColor:
pageBtnColor:
themeBtnColor:
themeNavColor:
NavTitColor:
var rong = api.require('UIRongCloud');
rong.setWalletStyles({
themeFontSize:14,
NavTitfontSize:16,
pageChargeFont:22,
pageTitleStr:'谁的钱包',
themePageColor:'#157EFB',
pageBtnColor:'#0665D6',
themeBtnColor:'#157EFB',
themeNavColor:'#157EFB',
NavTitColor:'#fff'
});
iOS系统
可提供的 1.0.0 及更高版本
初始化函数。融云红包服务已下架
注意:使用此接口需要下载 RCRedWallet 插件,然后上传自定义插件并勾选。
walletSDKWithPartnerId({params})
partnerId:
var rong = api.require('UIRongCloud');
rong.walletSDKWithPartnerId({
partnerId:"*******"
});
iOS系统
可提供的 1.0.0 及更高版本
初始化三方令牌。融云红包服务已下架
注意:使用此接口需要下载 RCRedWallet 插件,然后上传自定义插件并勾选。
walletSDKWithThirdToken({params})
token:
var rong = api.require('UIRongCloud');
rong.walletSDKWithThirdToken({
token:"*******"
});
iOS系统
可提供的 1.0.0 及更高版本
我的钱包页面。融云红包服务已下架
注意:iOS端使用此接口需要下载 RCRedWallet 插件,然后上传自定义插件并勾选。(Android 插件版本 1.4.0 后不再支持该方法)
openMyWallet()
var rong = api.require('UIRongCloud');
rong.openMyWallet();
iOS系统,Android系统
可提供的 1.0.0 及更高版本
会话列表页
openConversationList({params},callback())
title:
isEnteredToCollectionWindow:
showConnectingStatus:
conversationTypes:
collectionTypes:
avatarStyle:
avatarSize:
{
with:46, //数字类型;头像宽;默认:46
height:46 //数字类型;头像高;默认:46
}
cellBgColor:
topCellBgColor:
navigationBar:
{
titleColor: '#fff', //字符串类型;标题文字颜色;默认:#fff
bgColor: '#d6d6d6', //字符串类型;导航条背景色;默认:#d1d1d1
backColor: '#fff', //字符串类型;导航条返回按钮色;默认:#fff(android不支持)
backImage:'' //字符串类型;导航条返回按钮图片的路径,支持fs://,widget://;默认融云提供的按钮(ios不支持)
}
var rong = api.require('UIRongCloud');
rong.openConversationList({
avatarSize:{
width:46,
height:46
},
avatarStyle: 'cycle',
isEnteredToCollectionWindow:false,
showConnectingStatus:true,
title:'会话列表'
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
会话页面
openConversation(params,callback())
conversationType:
targetId:
title:
navigationBar:
{
titleColor: '#fff', //字符串类型;标题文字颜色;默认:#fff
bgColor: '#0099ff', //字符串类型;导航条背景色;默认:#0099ff
backColor: '#fff', //字符串类型;导航条返回按钮色;默认:#fff(android不支持)
backImage:'', //字符串类型;导航条返回按钮图片的路径,支持fs://,widget://;默认融云提供的按钮(ios不支持)
backImageSize:25 //数字类型;返回按钮大小;默认:25 (ios不支持)
}
ret:
{
eventType: 'back' //字符串类型;交互事件类型
//back:从聊天界面返回
targetId:1 //字符串类型;目标 Id
}
var rong = api.require('UIRongCloud');
rong.openConversation({
conversationType: 'PRIVATE',
targetId: '9527',
title: '9527'
},function(ret){
api.alert({msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
配置聊天页面的副标题;会在会话页面标题下方显示 (android 插件版本1.4.0 之后不再支持 )
注意:必须在调用openConversation接口 或 openConversationList接口之前调用本接口才能有效。
configChatSubTitle(params)
titleConfig:
[
{
targetId:"" //字符串类型; 会话id
subTitle:"" //字符串类型; 副标题
},
....
]
subTitleSize
subTitleColor
bgColor:
bgHeight:
var rong = api.require('UIRongCloud');
rong.configChatSubTitle({
title:"这是副标题"
});
iOS系统,Android系统
可提供的 1.1.4 及更高版本
配置通过 openConversation 或 openConversationList接口打开的聊天页面的右上角按钮和输入框扩展面板按钮
注意:必须在调用openConversation 或 openConversationList接口之前调用本接口才能有效。本接口非全局接口,只对当前页面有效。 (Android 插件版本 1.4.0 后不再支持该方法)
configChatButtons(params,callback())
pluginItems:
类型:数组
描述:(可选项) 聊天界面输入框扩展面板自定义显示各默认功能按钮
默认值:['file','image','location','emoji','redPacket','camera', 'sight']
取值范围:
insertPluginItems:
[{
title: '', //字符串类型;按钮标题
icon: '', //字符串类型;按钮图标
tag: //数字类型;按钮标签值,以2开头的四位数(2XXX),如2001
}]
rightIcon:
rightIcons:
dndIcon:
ret:
{
eventType: 'right' //字符串类型;交互事件类型
//right:右上角按钮点击事件
//plugin:点击聊天输入框扩展面板按钮事件
tag:2001 //数字类型;点击按钮的 tag 值,当eventType 为 plugin 时android不支持;当eventType 为 right 时表示点击的右上角按钮的索引(从右往左依次从0递增)
}
var rong = api.require('UIRongCloud');
rong.configChatButtons({
pluginItems: [‘file’,‘image’,‘location’,‘emoji’,‘redPacket’],
insertPluginItems: [{
title:'按钮1',
icon:'widget://res/btn1.png',
tag:2001
},{
title:'按钮2',
icon:'widget://res/btn2.png',
tag:2002
},{
title:'按钮3',
icon:'widget://res/btn3.png',
tag:2003
}],
rightIcon: 'fs://rightButton.png'
},function(ret){
api.alert({msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 1.0.4 及更高版本
关闭会话页面
close()
var UIRongCloud = api.require('UIRongCloud');
UIRongCloud.close();
android系统
可提供的 1.0.4 及更高版本
配置群聊相关功能。
注意:本接口属于非全局配置,仅对当前页面有效。需在每次openConversation接口打开群聊页面之前调用。
configGroupChat(params)
messageMentioned:
members:
membersInfo:
userId: '1234' //字符串类型;用户id
nickName: '哈哈' //字符串类型;用户昵称;
avatarUrl:'http://7xq864.com1.z0.glb.clouddn.com/apicloud/9ddf7d56095abd26f2c7ef72bb142563.png' //字符串类型;用户头像链接
membersInfo:[
{userId:'1234', nickName:"haha", avatarUrl:"http://7xq864.com1.z0.glb.clouddn.com/apicloud/9ddf7d56095abd26f2c7ef72bb142563.png"},
{userId:'1235', nickName:"haha1", avatarUrl:"http://7xq864.com1.z0.glb.clouddn.com/apicloud/9ddf7d56095abd26f2c7ef72bb142563.png"},
{userId:'1238', nickName:"haha2", avatarUrl:"http://7xq864.com1.z0.glb.clouddn.com/apicloud/9ddf7d56095abd26f2c7ef72bb142563.png"},
....
]
var users = ['sender','receiver'];
var UIRongCloud = api.require('UIRongCloud');
UIRongCloud.configGroupChat({
messageMentioned: true,
members:users
});
iOS系统、android系统
可提供的 1.0.1 及更高版本
显示对方输入状态、撤销刚(120秒)发送的消息功能配置
注意:显示对方输入状态功能仅对单聊有效
configChat(params)
messageRecall:
typingStatus:
var UIRongCloud = api.require('UIRongCloud');
UIRongCloud.configChat({
messageRecall: true,
typingStatus: true
});
iOS系统,Android系统
可提供的 1.0.1 及更高版本
设置用户头像,此方法在 connect 成功回调之后执行
注意:
由于iOS端SDK功能现在,带UI的接口打开的页面不支持自动显示头像,需要吊样本接口设置用户头像。可在 addNeedAvatarListener 接口回调内调用本接口设置用户头像。
setUserAvatar(params)
userId:
nickName:
avatarUrl:
var rong = api.require('UIRongCloud');
var params = {
userId : userId,
nickName : '白兰地',
avatarUrl : 'http://7xq864.com1.z0.glb.clouddn.com/apicloud/9ddf7d56095abd26f2c7ef72bb142563.png'
};
rong.setUserAvatar(params);
iOS系统,Android系统
可提供的 1.0.0 及更高版本
刷新用户缓存数据。
注意: 1、可在 addNeedAvatarListener 接口回调内调用本接口设置用户头像。 2、refreshUserInfoCache和setUserAvatar的区别:在android上融云提供了两种方式来显示用户信息,第一种是通过将用户信息携带到消息体中,在展示用户消息的时候,就会从消息体中取出用户信息,依次来展示用户头像和昵称,这是setUserAvatar接口实现的方式,目前只在android上有效,ios上用户信息无法携带到消息体中,所以如果涉及到android和ios之间的通讯,android上调用该接口,在ios上是无法展示用户信息的;为了解决此问题,在1.1.9版本中android添加了refreshUserInfoCache接口,同时android支持addNeedAvatarListener接口,refreshUserInfoCache可以配合addNeedAvatarListener接口使用,在会话界面中展示用户信息的时候,如果融云的SDK中没有找到用户信息时就会回调addNeedAvatarListener接口,开发者需要在该回调中调用refreshUserInfoCache接口,来缓存用户信息,以此来展示用户信息,如果再次有同一用户发来的消息时,是不会addNeedAvatarListener回调的,因为用了缓存,如果用户信息发生更改,直接调用refreshUserInfoCache接口来刷新用户信息
refreshUserInfoCache(params)
userId:
nickName:
avatarUrl:
var rong = api.require('UIRongCloud');
var params = {
userId : userId,
nickName : '白兰地',
avatarUrl : 'http://7xq864.com1.z0.glb.clouddn.com/apicloud/9ddf7d56095abd26f2c7ef72bb142563.png'
};
rong.refreshUserInfoCache(params);
Android系统
可提供的 1.1.9 及更高版本
发起单人通话
startSingleCall(params)
targetId:
type:
var rong = api.require('UIRongCloud');
var params = {
targetId : userId,
type : 'audio'
};
rong.startSingleCall(params);
ios系统、Android系统
可提供的 1.2.0 及更高版本
发起多人通话
startMultiCall(params)
conversationType:
targetId:
customUI:
callName:
type:
userids:
names:
var rong = api.require('UIRongCloud');
var params = {
targetId : userId,
type : 'audio',
userids:['1234', 'lan']
};
rong.startMultiCall(params);
ios系统、Android系统
可提供的 1.2.0 及更高版本
邀请用户加入当前通话 (仅限讨论组和群组)
addParticipants(params)
userIds:
observerUserIds:
var rong = api.require('UIRongCloud');
var params = {
userIds : ['1234', '0000']
};
rong.addParticipants(params);
ios系统,Android系统
可提供的 1.2.0 及更高版本
获取当前通话实体,通话实体中维护着当前通话的所有信息。
getCallSession(callback(ret))
ret:
{
status: //布尔类型;状态
activeTime: //数字类型;激活时间
callerUserId: //字符串类型;呼叫人id
callId: //字符串类型;通话id
conversationType: //字符串类型;会话类型
endTime: //数字类型;结束时间,仅支持android端
extra: //字符串类型;扩展字段
inviterUserId: //字符串类型;邀请人id
mediaType: //数字类型;通话媒体类型 1:audio 2:video
observerUserList: //数组类型;观察者数组=
selfUserId: //字符串类型;自己的id
startTime: //数字类型;开始时间
targetId: //字符串类型;targetId
callUserType: //字符串类型;用户类型; 1:NORMAL 2:OBSERVER,仅支持android端
participantProfileList: //JSON型的数组类型,当前的用户列表,包含观察者列表中的成员;内部字段:
{
mediaId: '',//字符串类型;mediaId
userId:'', //字符串类型;用户id
userType: //数字类型;用户类型; 1:NORMAL 2:OBSERVER
callStatus: //数字类型;通话状态 1:OUTGOING 2:INCOMING 3:RINGING 4:CONNECTED 5:IDLE
mediaType: //数字类型;通话媒体类型 1:audio 2:video
}
}
var rong = api.require('UIRongCloud');
rong.getCallSession(function(ret) {
api.alert({msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 1.2.0 及更高版本
设置本地视频属性,可用此接口设置本地视频分辨率,设置宽和高替换
setVideoProfile(params)
profile:
swapWidthAndHeight:
var rong = api.require('UIRongCloud');
rong.setVideoProfile({
swapWidthAndHeight:true,
profile:‘480P’
});
iOS系统,Android系统
可提供的 1.2.0 及更高版本
检查是否开启悬浮窗权限(该接口暂仅支持android,Android 插件版本 1.4.0 后不再支持该方法)
checkDrawOverlaysPermission(params)
needOpenPermissionSetting:
var rong = api.require('UIRongCloud');
rong.checkDrawOverlaysPermission({
needOpenPermissionSetting:true
});
Android系统
可提供的 1.2.0 及更高版本
添加点击聊天页面内头像的监听
addAvatarListener(callback(ret))
ret:
{
userId: //字符串类型;点击的头像的用户的id
}
var rong = api.require('UIRongCloud');
rong.addAvatarListener(function(ret) {
api.alert({msg:'点击的用户是'+.JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 1.0.1 及更高版本
语音通话相关接口
addRTCCallListener(callback(ret))
ret:
{
eventType:'cancel'
}
eventType参数列表
var rong = api.require('UIRongCloud');
rong.addRTCCallListener(function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
Android系统
可提供的 1.0.1 及更高版本
添加需要设置头像的时刻的监听
注意:
可在本接口的回调里调用setUserAvatar接口设置用户头像。
addNeedAvatarListener(callback(ret))
ret:
{
userId: //字符串类型;需要设置头像的用户的id
}
var rong = api.require('UIRongCloud');
rong.addNeedAvatarListener(function(ret) {
var params = {
userId : ret.userId,
nickName : '白兰地',
avatarUrl : 'http://7xq864.com1.z0.glb.clouddn.com/apicloud/9ddf7d56095abd26f2c7ef72bb142563.png'
};
rong.setUserAvatar(params);
});
iOS系统、android系统
可提供的 1.0.6 及更高版本
当前用户加入某聊天室
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('UIRongCloud');
// 之前调用 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.0.6 及更高版本
当前用户退出某聊天室
quitChatRoom({params}, callback(ret, err))
chatRoomId:
ret:
{
status: 'success' // 状态码:success / error
}
err:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
var rong = api.require('UIRongCloud');
// 之前调用 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.0.6 及更高版本
将某个用户加到黑名单中
addToBlacklist({params}, callback(ret, err))
userId:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.addToBlacklist({
userId: '688'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
将个某用户从黑名单中移出
removeFromBlacklist({params}, callback(ret, err))
userId:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.removeFromBlacklist({
userId: '688'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取某用户是否在黑名单中
getBlacklistStatus({params}, callback(ret, err))
userId:
ret:
{
status: 'success', // 状态码:success / error
result: 1 // 1-不在黑名单;0-在黑名单
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.getBlacklistStatus({
userId: '688'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取当前用户的黑名单列表
getBlacklist(callback(ret))
ret:
{
status: 'success' ,// 状态码:success / error
result: ['aaa','bbb']
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.getBlacklist(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
设置消息通知免打扰时间
setNotificationQuietHours({params}, callback(ret, err))
startTime:
spanMinutes :
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.setNotificationQuietHours({
startTime: '22:00:00',
spanMinutes: 6
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
移除消息通知免打扰时间
removeNotificationQuietHours(callback(ret, err))
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.removeNotificationQuietHours(function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取消息通知免打扰时间
getNotificationQuietHours(callback(ret))
ret:
{
status: 'success' , // 状态码:success / error
result: {
startTime: "22:00:00", // 起始时间
spanMinutes: 6 // 间隔分钟数
}
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.getNotificationQuietHours(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
设置某一会话为置顶或者取消置顶
setConversationToTop({params}, callback(ret))
conversationType:
targetId:
isTop:
ret:
{
status: 'success' // 状态码:success / error
}
var rong = api.require('UIRongCloud');
// 之前调用 init 和 connect 的代码省略
rong.setConversationToTop({
conversationType: 'PRIVATE',
targetId: '9527',
isTop: true
}, function(ret, err) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
推送消息的监听
pushListener(callback(ret))
ret:
{
content: '' // 字符串类型;推送内容
data : // 字符串类型;推送数据
pushId : // 字符串类型;推送id
pushTitle : // 字符串类型;推送标题
senderId : // 字符串类型;推送senderId
senderName : // 字符串类型;推送senderName
targetId : // 字符串类型;推送targetId
targetUserName : // 字符串类型;推送
}
Android系统
可提供的 1.0.8 及更高版本
区分不同的会话形式,字符串类型
iOS系统,Android系统
可提供的 1.0.0 及更高版本
会话通知提醒的状态,开启或者关闭,字符串类型
iOS系统,Android系统
可提供的 1.0.0 及更高版本
讨论组邀请状态,开放或者关闭,字符串类型
iOS系统,Android系统
可提供的 1.0.0 及更高版本
连接状态,字符串类型
iOS系统,Android系统
可提供的 1.0.0 及更高版本
连接状态,字符串类型
iOS系统,Android系统
可提供的 1.0.0 及更高版本
接收到的消息状态,字符串类型
iOS系统,Android系统
可提供的 1.0.0 及更高版本