- rcIM
- 模块接口详情
- setServerInfo
- init
- connect
- disconnect
- setConnectionStatusListener
- getConnectionStatus
- getCurrentUserId
- sendTextMessage
- sendImageMessage
- sendVoiceMessage
- sendLocationMessage
- sendRichContentMessage
- sendCommandNotificationMessage
- sendCommandMessage
- setOnReceiveMessageListener
- sendReadReceiptMessage
- addReceiveReadReceiptListener
- setOnMessageRecalledListener
- sendReadReceiptRequest
- addReadReceiptListener
- removeReadReceiptListener
- sendReadReceiptResponse
- getOfflineMessageDuration
- setOfflineMessageDuration
- getLatestMessages
- getHistoryMessages
- getHistoryMessagesByObjectName
- getRemoteHistoryMessages
- deleteMessages
- clearMessages
- recallMessage
- getTotalUnreadCount
- getUnreadCount
- getUnreadCountByConversationTypes
- getUnreadMentionedMessages
- setMessageReceivedStatus
- setMessageSentStatus
- clearMessagesUnreadStatus
- sendTypingStatus
- addTypingStatusListener
- setMessageExtra
- getTextMessageDraft
- saveTextMessageDraft
- clearTextMessageDraft
- getConversationList
- getTopConversationList
- getBlockedConversationList
- getConversationListByCount
- getConversation
- removeConversation
- clearConversations
- setConversationToTop
- getMessageCount
- searchConversations
- searchMessages
- createDiscussion
- getDiscussion
- setDiscussionName
- addMemberToDiscussion
- removeMemberFromDiscussion
- quitDiscussion
- setDiscussionInviteStatus
- joinChatRoom
- quitChatRoom
- addToBlacklist
- removeFromBlacklist
- getBlacklistStatus
- getBlacklist
- addCallReceiveListener
- removeCallReceiveListener
- startCall
- addCallSessionListener
- removeCallSessionListener
- getCallSession
- isCallEnabled
- setVideoProfile
- setEnableBeauty
- accept
- hangup
- addParticipants
- setVideoView
- resetVideoView
- removeVideoView
- addVideoViewListener
- changeMediaType
- isMuted
- setMuted
- speakerEnabled
- setSpeakerEnabled
- cameraEnabled
- setCameraEnabled
- switchCameraMode
- startAudioRecording
- stopAudioRecording
- callback(ret)
- 示例代码
- 可用性
- disableLocalNotification
- enableLocalNotification
- configLocalNotification
- getConversationNotificationStatus
- setConversationNotificationStatus
- setNotificationQuietHours
- removeNotificationQuietHours
- getNotificationQuietHours
- addNeedAvatarListener
- setUserAvatar
- refreshUserInfoCache
- close
- addAvatarListener
- configChatSubTitle
- configChatButtons
- configChat
- configGroupChat
- openConversationList
- openConversation
- startSingleCall
- startMultiCall
- addNeedGroupInfoListener
- setWalletStyles
- params
- walletSDKWithPartnerId
- params
- walletSDKWithThirdToken
- params
- openMyWallet
- 会话类型
- 会话通知提醒状态
- 讨论组邀请状态
- 连接状态
- 发送出的消息状态
- 接收到的消息状态
rcIM
来自于:开发者立即使用
功能接口
初始化和连接
setServerInfo init connect disconnect setConnectionStatusListener getConnectionStatus getCurrentUserId
消息的发送
sendTextMessage sendImageMessage sendVoiceMessage sendLocationMessage sendRichContentMessage sendCommandNotificationMessage sendCommandMessage
监听收到的消息
消息回执(群组、单聊)
sendReadReceiptMessage addReceiveReadReceiptListener setOnMessageRecalledListener sendReadReceiptRequest addReadReceiptListener removeReadReceiptListener sendReadReceiptResponse
离线消息
getOfflineMessageDuration setOfflineMessageDuration
获取最后、历史消息,删除、清空、撤销消息
getLatestMessages getHistoryMessages getHistoryMessagesByObjectName getRemoteHistoryMessages deleteMessages clearMessages recallMessage
获取未读消息
getTotalUnreadCount getUnreadCount getUnreadCountByConversationTypes getUnreadMentionedMessages
设置消息的状态
setMessageReceivedStatus setMessageSentStatus clearMessagesUnreadStatus sendTypingStatus addTypingStatusListener setMessageExtra
文字消息草稿
getTextMessageDraft saveTextMessageDraft clearTextMessageDraft
会话
getConversationList getTopConversationList getBlockedConversationList getConversationListByCount getConversation removeConversation clearConversations setConversationToTop getMessageCount
搜索消息和会话
searchConversations searchMessages
讨论组
createDiscussion getDiscussion setDiscussionName addMemberToDiscussion removeMemberFromDiscussion quitDiscussion setDiscussionInviteStatus
聊天室
黑名单
addToBlacklist removeFromBlacklist getBlacklistStatus getBlacklist
音视频通话
addCallReceiveListener removeCallReceiveListener startCall addCallSessionListener removeCallSessionListener getCallSession isCallEnabled setVideoProfile setEnableBeauty accept hangup addParticipants setVideoView resetVideoView removeVideoView addVideoViewListener changeMediaType isMuted setMuted speakerEnabled setSpeakerEnabled cameraEnabled setCameraEnabled switchCameraMode startAudioRecording stopAudioRecording
本地通知的设置
disableLocalNotification enableLocalNotification configLocalNotification
会话通知状态
getConversationNotificationStatus setConversationNotificationStatus
消息通知免打扰
setNotificationQuietHours removeNotificationQuietHours getNotificationQuietHours pushListener
带UI的接口
打开带UI的会话界面及列表
addNeedAvatarListener setUserAvatar refreshUserInfoCache close addAvatarListener configChatSubTitle configChatButtons configChat configGroupChat openConversationList openConversation startSingleCall startMultiCall
红包页面
setWalletStyles walletSDKWithPartnerId walletSDKWithThirdToken openMyWallet
概述
融云 Rong Cloud 是国内首家专业的即时通讯云服务提供商,专注为互联网、移动互联网开发者提供即时通讯基础能力和云端服务。通过融云平台,开发者不必搭建服务端硬件环境,就可以将即时通讯、实时网络能力快速集成至应用中。
rcIM 封装了融云即时通讯能力库 IMLib SDK 和 IMKit SDK 的 API,对融云的相关接口做了一一对应的封装,功能详情可参考目录。其中 IMLib 是融云提供的纯功能性的库,优点是可自定义性强,缺点是需要开发者自行开发UI界面,工作量大。IMKit 是自带 UI 的库,优点是可直接调用带 UI 的接口打开聊天页面,开发速度快,缺点是部分 UI 是 SDK 写死的,无法修改。IMKit 适用于对 UI 要求不高的项目。如果你的项目对 UI 和功能需求很深,请使用非 UI 类接口开发。
使用 rcIM 模块之前,请先 注册融云开发者帐号 并申请创建 App,创建 App 后,可以在 开发者后台 获取 App Key 和 App Secret 用于开发。
开发前请先认真阅读相关的 融云开发文档和视频。
模块接口概览
IMLib 和 IMKit 库通用的接口: setServerInfo init connect disconnect setConnectionStatusListener getConnectionStatus getCurrentUserId sendTextMessage sendImageMessage sendVoiceMessage sendLocationMessage sendRichContentMessage sendCommandNotificationMessage sendCommandMessage setOnReceiveMessageListener sendReadReceiptMessage addReceiveReadReceiptListener setOnMessageRecalledListener sendReadReceiptRequest addReadReceiptListener removeReadReceiptListener sendReadReceiptResponse getOfflineMessageDuration setOfflineMessageDuration getLatestMessages getHistoryMessages getHistoryMessagesByObjectName getRemoteHistoryMessages deleteMessages clearMessages recallMessage getTotalUnreadCount getUnreadCount getUnreadCountByConversationTypes getUnreadMentionedMessages setMessageReceivedStatus setMessageSentStatus clearMessagesUnreadStatus sendTypingStatus addTypingStatusListener setMessageExtra getTextMessageDraft saveTextMessageDraft clearTextMessageDraft getConversationList getTopConversationList getBlockedConversationList getConversationListByCount getConversation removeConversation clearConversations setConversationToTop getMessageCount searchConversations searchMessages createDiscussion getDiscussion setDiscussionName addMemberToDiscussion removeMemberFromDiscussion quitDiscussion setDiscussionInviteStatus joinChatRoom quitChatRoom addToBlacklist removeFromBlacklist getBlacklistStatus getBlacklist disableLocalNotification enableLocalNotification getConversationNotificationStatus setConversationNotificationStatus setNotificationQuietHours removeNotificationQuietHours getNotificationQuietHours pushListener
属于 IMLib 库的接口: addCallReceiveListener removeCallReceiveListener startCall addCallSessionListener removeCallSessionListener getCallSession isCallEnabled setVideoProfile setEnableBeauty accept hangup addParticipants setVideoView resetVideoView removeVideoView addVideoViewListener changeMediaType isMuted setMuted speakerEnabled setSpeakerEnabled cameraEnabled setCameraEnabled switchCameraMode startAudioRecording stopAudioRecording configLocalNotification
属于 IMKit 库的接口:
addNeedAvatarListener setUserAvatar refreshUserInfoCache close addAvatarListener configChatSubTitle configChatButtons configChat configGroupChat openConversationList openConversation startSingleCall startMultiCall
setWalletStyles walletSDKWithPartnerId walletSDKWithThirdToken openMyWallet
注意:自定义附加模块
若集成了 IMKit 库,则属于 IMLib 库的接口将不可用!
iOS 平台推送通知功能详解
本文主要介绍了使用融云 IM 时,何时会收到远程推送、如何使用远程推送、如何获取远程推送的内容。
何时会收到远程推
在使用远程推送之前,您需要先了解融云 SDK 的运行状态。
融云SDK的运行状态及其内容的接受
融云 SDK 根据 iOS App 运行的特性,主要有以下三种运行状态:
1、 前台状态 如字面意思,App 前台可见时模块处于前台状态。此时 App 使用融云的长连接通道来收发消息。
2、 后台活动状态 当 App 进入后台 2 分钟之内,模块于后台活跃状态。此时 App 使用融云的长连接通道接收消息。
3、 后台暂停状态当 App 进入后台 2 分钟之后或被杀进程或被冻结,模块处于后台暂停状态。此时融云的长连接通道会断开,融云 Server 会通过 APNs 将消息以远程推送的形式下发到客户端。 此状态下如果有人给该用户发送消息,融云的服务器会根据 deviceToken 和推送证书将消息发送到苹果推送服务器,苹果服务器会将该消息推送到客户端。
如何使用远程推送
此过程的 1-4 步骤请参考融云官方的 推送开发指南——如何使用远程推送。其中涉及到的 AppID即为 Bundle Identifie,与 APICloud 平台上的包名是同一个东西,在 APICloud 平台上应用的概览里可以查看。
- 为 App 开启远程推送服务
- 生成并上传 P12 证书
- 融云开发者平台上传 p12 证书
- 生成 provisioning profile 文件
- 将 provisioning profile 文件上传 APICloud 平台
- 在 APICloud 平台云编译出 ipa 安装包并安装(正式版发布到苹果商店,通过苹果商店下载安装)
- 用户允许推送
以上步骤都已经实现后,还需要使用您 App 的用户允许通知,才能收到远程推送。您可以在设备的设置应用中,查看当前App是否允许通知。
远程推送内容的获取
点击通知栏的远程推送时,如果此时 App 已经被系统冻结,则APICloud会将本次推送的内容通过事件监听回调的方式交给开发者。具体使用如下:
api.addEventListener({
name: 'noticeclicked'
}, function(ret) {
if (ret && ret.value) {
var result = ret.value;
}
})
如果 App 未被系统冻结,则您在 setOnReceiveMessageListener 接口中可以捕获该消息,详情参考 setOnReceiveMessageListener 接口说明。
音视频通话推送功能详细请参考 VoIP 推送设置文档(1-6)。其中步骤6参考 APICloud 平台关于后台运行权限的配置。
android 平台推送通知功能详解
小米推送
- 集成小米推送需要依赖APICloud平台的mipush模块
- 在小米开发者平台申请应用,并将appid和appkey配置到init接口中
- 在小米开发者平台申请应用后,需要将APP Secret配置到融云控制台的应用标识中
华为推送
- 集成华为推送需要依赖APICloud平台的huaweiPush模块,并在config中配置huaweiPush模块
- 在华为开发者平台申请应用,并将init接口中的huaweiPush参数设置为true
- 在华为开发者平台申请应用后,需要将华为的相关参数配置到融云控制台的应用标识中
推送注意事项
如果要集成推送服务,需要在config中进行如下配置
<intent-filter>
<action name="android.intent.action.VIEW" />
<category name="android.intent.category.DEFAULT" />
<data host="你的包名" pathPrefix="/push_message" scheme="rong" />
</intent-filter>
- android上点击推送过来的消息,开发者可以在 appintent 事件中接收到该消息的内容,可以从 appParam 参数的 rong_params 字段中获取;
- 默认开启多端同步阅读状态功能;目前仅支持单聊、群聊
- android上点击推送过来的消息,开发者可以在appintent事件中接收到该消息的内容,可以从appParam参数的rong_params字段中获取;
- android本模块必须使用升级环境编译
- 最低android版本要求4.4
- 发红包功能必须依赖于aliPayPlus模块
- 发送位置功能必须依赖于aMap模块
模块使用攻略:
Config 文件配置:
使用该模块需要在 config.xml
中进行如下配置 (可参考 Intent-Filter):
<intent-filter>
<action name="android.intent.action.VIEW"/>
<category name="android.intent.category.DEFAULT"/>
<data scheme="rong" host="io.rong.fast" 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 为集成应用的包名
自定义附加模块制作(iOS端)
IMLib (通讯能力库)
在融云官网 下载页面 点击 IMLib SDK 下载
按钮,下载 zip 包并解压。
将解压缩得到的文件夹中所有的 .framework
文件、.a
文件、.plist
文件提取出来,放在一个 target 文件夹下备用。下载 rcIMLibAppendix 模块 zip 包并解压,把 zip 包内 target 文件夹替换为上一步创建的 target文件夹。然后重新压缩为 zip 包文件上传自定义模块,云编译时勾选该模块。 注意重新压缩时注意不要多一层目录。target 文件夹目录如下图所示:
IMKit (界面组件 SDK)
在融云官网 下载页面 点击 IMKit SDK 下载
按钮,下载 zip 包并解压。
其中有三个扩展功能 SDK 包:
- RedPacket:红包功能库,若不需要红包功能删除即可(红包接口将不可用,且configChatButtons接口配置了redPacket也不会显示发送红包按钮)
- RongSticker:发送动态表情功能库,若不需要动态功能删除即可(configChatButtons接口配置了emoji也不会显示动态表情按钮)
- Sight:发送短视频功能库,若不需要发送短视频功能删除即可(configChatButtons接口配置了sight也不会显示发送短视频按钮)
将解压缩得到的文件夹中的所有的(扩展功能 SDK 包中的文件根据需求选择性添加,RedPacket、RongSticker、Sight) .framework
文件、.a
文件、.plist
、.bundle
、.cer
以及图片资源文件提取出来,放在一个 target 文件夹下备用。下载 rcIMKitAppendix 模块 zip 包并解压,保留其中的 libACRCKitBridge.a
文件备用。把 zip 包内 target 文件夹替换为上一步创建的 target文件夹。然后把 libACRCKitBridge.a
文件也放到 target 目录下。最后重新压缩为 zip 包文件上传自定义模块,云编译时勾选该模块。 注意重新压缩时注意不要多一层目录。示例 target 文件夹目录如下图所示:
注意:
- iOS端最低适配版本为 iOS8.0
.framework
、.bundle
文件已经是最小单元文件,不需要再把其中的文件提取出来
关于 .lproj
文件
.lproj
文件是国际化语言包文件,其中代表的语言如下所示:
- Base.lproj:基础语言包
- en.lproj:英文语言包
- zh-Hans.lproj:简体中文语言包
IMKit、RCMCenter、RongSticker、RedPacket->JrmfIMLib文件夹内包含有 .lproj
文件,需要按需把 .lproj
文件内的 .strings
文件提取放在 localization 文件夹对应的 .lproj
文目录下,否则UI界面中部分文字会有缺失。示例 localization 文件夹目录如下图所示:
自定义附加模块制作(Android端)
android的所有sdk是直接打到模块包里的,不需要开发者做自定义配置
模块接口详情
setServerInfo
设置私有部署的导航服务器和媒体服务器地址。 此方法要在 init() 前使用 可以支持设置 http://cn.xxx.com 或者 cn.xxx.com 如果设置成 cn.xxx.com,sdk 会组装成并仅支持 http:// 协议格式。 支持传入多个导航, 多个导航地址之间须以分号 ; 分隔
setServerInfo({params})
params
naviServer:
- 类型:字符串
- 描述:私有部署的导航服务器地址
fileServer:
- 类型:字符串
- 描述:私有部署的媒体服务器地址,即文件和图片的上传地址。使用私有云时必须填写
示例代码
var rong = api.require('rcIM');
rong.setServerInfo({
naviServer:'',
fileServer:''
});
可用性
Android 系统,iOS 系统
可提供的 1.0.0 及更高版本
init
初始化融云 SDK,调用 connect 连接前务必保证调用此方法
调用前请在 config.xml 中设置内容如下:
<feature name="rcIM">
<param name="appKey" value="此处填写 App Key 值" />
</feature>
其中 value 的值请替换为您在融云开发者平台上申请的 App Key 值
init(params, callback(ret, err))
params
miPush:
- 类型:JSON对象
- 描述:(可选项)配置小米推送的信息
- 默认值:无
内部字段:
appId: //字符串类型;小米后台申请的appid
appKey: //字符串类型;小米后台申请的appKey
huaweiPush:
- 类型:布尔类型
- 描述:(可选项) 是否集成华为推送
- 默认值:false
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:初始化的状态,如果 config.xml 中没有设置 appKey 值,会导致失败,错误信息为参数错误
- 内部字段:
{
status: 'success' //字符串类型;状态码:success / error
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: -10002, //数字类型; 错误码
msg:'' //字符串类型;错误信息
}
示例代码
var rong = api.require('rcIM');
rong.init(function(ret, err) {
if (ret.status)
api.toast({ msg: err.code });
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
connect
连接融云 IM 服务器,进行后续各种方法操作前务必要先调用此方法
connect({params}, callback(ret, err))
params
token:
- 类型:字符串
- 描述:从服务端获取的用户身份令牌(Token)
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:返回的登录成功或者失败的状态
- 内部字段:
{
status: 'success', //字符串类型;状态码:success / error
result: // JSON对象;返回结果
{
userId: '9527' //字符串类型;当前登录用户 ID
}
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: -10002, //数字类型; 错误码
msg:'' //字符串类型;错误信息
}
错误说明:
错误码 | 说明 |
---|---|
31003 | 服务器不可用 |
31004 | 错误的令牌(Token),Token 解析失败,请重新向身份认证服务器获取 Token |
31002 | 可能是错误的 App Key,或者 App Key 被服务器积极拒绝 |
33002 | 服务端数据库错误 |
31000 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10002 | 输入参数错误 |
-1000 | (此错误只发生在 iOS)当已经 connect 成功后再次 connect 时会返回此错误 |
示例代码
var rong = api.require('rcIM');
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
断开连接
disconnect({params}, callback(ret, err))
params
isReceivePush:
- 类型:布尔
- 描述:(可选项)断开后是否接收 Push
- 默认值:true
callback(ret)
ret:
- 类型:JSON 对象
- 描述:返回的登录成功或者失败的状态
- 内部字段:
{
status: 'success' //字符串类型;状态码:success / error
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: -10002, //数字类型; 错误码
msg:'' //字符串类型;错误信息
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.disconnect({
isReceivePush: true
}, function(ret, err) {
if ('success' == ret.status) {
api.toast({ msg: '断开连接成功!' });
}
}); // 断开,且不再接收 Push
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
setConnectionStatusListener
设置连接状态变化的监听器,请在调用 init 方法之后,调用 connect 方法之前设置
setConnectionStatusListener(callback(ret, err))
callback(ret)
ret:
- 类型:JSON 对象
- 描述:连接服务器的回调返回值,参见 连接状态
- 内部字段:
{
result:
{
connectionStatus: 'CONNECTED' // 连接状态
}
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 的代码省略
rong.setConnectionStatusListener(function(ret, err) {
api.toast({ msg: ret.result.connectionStatus });
});
// 之后调用 connect 的代码省略
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getConnectionStatus
获取连接状态
getConnectionStatus(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:连接状态枚举,参见 连接状态;
- 内部字段:
{
status: 'success', //字符串类型;状态码:success / error
result:
{
connectionStatus: 'CONNECTED' //字符串类型;连接状态
}
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: -10002, //数字类型; 错误码
msg:'' //字符串类型;错误信息
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.getConnectionStatus(function(ret, err) {
api.toast({ msg: ret.result.connectionStatus });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getCurrentUserId
获取当前连接用户的信息
getCurrentUserId(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success', //字符串类型;状态码:success / error
result: 'apple' //字符串类型;当前连接用户
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.getCurrentUserId(function(ret, err) {
api.toast({ msg: ret.result });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
sendTextMessage
发送文字消息
sendTextMessage({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,通过改变消息会话类型,可以发送单聊消息、讨论组消息、群聊消息、聊天室消息等,参见 会话类型
targetId:
- 类型:字符串
- 描述:消息的接收方 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
text:
- 类型:字符串
- 描述:消息的文字内容
extra:
- 类型:字符串
- 描述:(可选项)消息的附加信息
mentionedInfo:
- 类型:JSON类型
- 描述:(可选项)@功能,当conversationType为GROUP或DISCUSSION有效;(ios不支持DISCUSSION);注:@ 消息推送会越过所有免打扰逻辑,给用户推送 Push 通知。
- 内部字段:
{
type:"all", //(可选项) 字符串类型;@消息类型,默认值:all;取值范围:
//all:@群组里所有人
//part:@部分人
userIdList:['123'] //字符串类型的数组;用户id;当type为part时,需要填写此字段;
}
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:返回的消息内容。发送准备时,提供所有消息信息;之后,result 中将只返回 message.messageId 等必要相关的内容
- 注:此模块android上不支持prepare字段,新添attached字段
- 内部字段:
发送准备:
{
status: 'prepare', //字符串类型;状态码:prepare/ attached/ 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: 'attached', //字符串类型;状态码:prepare/ attached/ 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:
- 类型:JSON 对象
- 内部字段:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
示例代码
var rong = api.require('rcIM');
// 之前调用 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 及更高版本
sendImageMessage
发送图片消息
sendImageMessage({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,通过改变消息会话类型,可以发送单聊消息、讨论组消息、群聊消息、聊天室消息等,参见 会话类型
targetId:
- 类型:字符串
- 描述:消息的接收方 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
imagePath:
- 类型:字符串
- 描述:图片的路径,支持 fs://,如:fs:///image/123.jpg
extra:
- 类型:字符串
- 描述:(可选项)消息的附加信息
isFull:
- 类型:布尔类型
- 描述:(可选项)是否发送原图
- 默认值:false
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:返回的消息内容。发送准备时,提供所有消息信息;之后,result 中将只返回 message.messageId 等必要相关的内容
- 注:此模块android上不支持prepare字段,新添attached字段
- 内部字段:
发送准备:
{
status: 'prepare', // 状态码:prepare / attached / 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: 'attached', // 状态码:prepare / attached / 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 / attached / progress / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
},
progress: 66 // 发送进度
}
}
成功:
{
status: 'success', // 状态码:prepare / progress / attached / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / progress / success / error
result:
{
message:
{
sentStatus: 'FAILED', // 发送状态:SENDING, SENT 或 FAILED
messageId: 608 // 本地消息 Id
}
}
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
示例代码
var rong = api.require('rcIM');
// 之前调用 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 及更高版本
sendVoiceMessage
发送语音消息
sendVoiceMessage({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,通过改变消息会话类型,可以发送单聊消息、讨论组消息、群聊消息、聊天室消息等,参见 会话类型
targetId:
- 类型:字符串
- 描述:消息的接收方 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
voicePath:
- 类型:字符串
- 描述:语音文件的路径,支持 fs://,如:fs:///voice/123.amr。文件要求为 AMR 格式
duration:
- 类型:数字
- 描述:语音消息的时长,单位为秒
extra:
- 类型:字符串
- 描述:(可选项)消息的附加信息
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:返回的消息内容。发送准备时,提供所有消息信息;之后,result 中将只返回 message.messageId 等必要相关的内容
- 注:此模块android上不支持prepare字段,新添attached字段
- 内部字段:
发送准备:
{
status: 'prepare', // 状态码:prepare / attached / 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: 'attached', // 状态码:prepare / attached / 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 / attached / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / attached / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
示例代码
var rong = api.require('rcIM');
// 之前调用 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 及更高版本
sendLocationMessage
发送位置消息
sendLocationMessage({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,通过改变消息会话类型,可以发送单聊消息、讨论组消息、群聊消息、聊天室消息等,参见 会话类型
targetId:
- 类型:字符串
- 描述:消息的接收方 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
latitude:
- 类型:数字
- 描述:消息的文字内容
longitude:
- 类型:数字
- 描述:消息的文字内容
poi:
- 类型:字符串
- 描述:消息的文字内容
imagePath:
- 类型:字符串
- 描述:地图缩率图的路径,支持 fs://,如:fs:///location_thumb/123.jpg
extra:
- 类型:字符串
- 描述:(可选项)消息的附加信息
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:返回的消息内容。发送准备时,提供所有消息信息;之后,result 中将只返回 message.messageId 等必要相关的内容
- 注:此模块android上不支持prepare字段,新添attached字段
- 内部字段:
发送准备:
{
status: 'prepare', // 状态码:prepare / attached / 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: 'attached', // 状态码:prepare / attached / 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 / attached / progress / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
},
progress: 66 // 发送进度
}
}
成功:
{
status: 'success', // 状态码:prepare / attached / progress / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / attached / progress / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
示例代码
var rong = api.require('rcIM');
// 之前调用 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 及更高版本
sendRichContentMessage
发送图文消息
sendRichContentMessage({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,通过改变消息会话类型,可以发送单聊消息、讨论组消息、群聊消息、聊天室消息等,参见 会话类型
targetId:
- 类型:字符串
- 描述:消息的接收方 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
title:
- 类型:字符串
- 描述:消息的标题
description:
- 类型:字符串
- 描述:消息的内容描述
imageUrl:
- 类型:字符串
- 描述:消息图片的网络地址
extra:
- 类型:字符串
- 描述:(可选项)消息的附加信息
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:返回的消息内容。发送准备时,提供所有消息信息;之后,result 中将只返回 message.messageId 等必要相关的内容
- 注:此模块android上不支持prepare字段,新添attached字段
- 内部字段:
发送准备:
{
status: 'prepare', // 状态码:prepare / attached / 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: 'attached', // 状态码:prepare / attached / 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 / attached / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / attached / success / error
result:
{
message:
{
sentStatus: 'FAILED', // 发送状态:SENDING, SENT 或 FAILED
messageId: 608 // 本地消息 Id
}
}
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
示例代码
var rong = api.require('rcIM');
// 之前调用 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 及更高版本
sendCommandNotificationMessage
发送命令消息,可以用来实现任何自定义消息的发送
sendCommandNotificationMessage({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,通过改变消息会话类型,可以发送单聊消息、讨论组消息、群聊消息、聊天室消息等,参见 会话类型
targetId:
- 类型:字符串
- 描述:消息的接收方 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
name:
- 类型:字符串
- 描述:命令的名称
data:
- 类型:字符串
- 描述:命令的数据
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:返回的消息内容。发送准备时,提供所有消息信息;之后,result 中将只返回 message.messageId 等必要相关的内容
- 注:此模块android上不支持prepare字段,新添attached字段
- 内部字段:
发送准备:
{
status: 'prepare', // 状态码:prepare / attached / 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: 'attached', // 状态码:prepare / attached / 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 / attached / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / attached / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
示例代码
var rong = api.require('rcIM');
// 之前调用 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
发送命令消息,您需要这种类型的消息时可以直接使用,不需要再自定义。此消息不保存、不计数。
sendCommandMessage({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,通过改变消息会话类型,可以发送单聊消息、讨论组消息、群聊消息、聊天室消息等,参见 会话类型
targetId:
- 类型:字符串
- 描述:消息的接收方 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
name:
- 类型:字符串
- 描述:命令的名称
data:
- 类型:字符串
- 描述:命令的数据
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:返回的消息内容。发送准备时,提供所有消息信息;之后,result 中将只返回 message.messageId 等必要相关的内容
- 注:此模块android上不支持prepare字段,新添attached字段
- 内部字段:
发送准备:
{
status: 'prepare', // 状态码:prepare / attached / 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: 'attached', // 状态码:prepare / attached / 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 / attached / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
失败:
{
status: 'error', // 状态码:prepare / attached / success / error
result:
{
message:
{
messageId: 608 // 本地消息 Id
}
}
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30014 | 发送处理失败 |
30003 | 服务器超时 |
31009 | 用户被屏蔽 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
405 | 用户在黑名单中 |
示例代码
var rong = api.require('rcIM');
// 之前调用 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 及更高版本
setOnReceiveMessageListener
设置接收消息的监听器,请在调用 init 方法之后,调用 connect 方法之前设置
所有接收到的消息、通知、状态都经由此处设置的监听器处理。包括私聊消息、讨论组消息、群组消息、聊天室消息以及各种其他消息、通知、状态等
setOnReceiveMessageListener(callback(ret, err))
callback(ret)
ret:
- 类型:JSON 对象
- 描述:接收到的消息内容和剩余消息条数
- 内部字段:
{
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('rcIM');
// 之前调用 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 及更高版本
sendReadReceiptMessage
发送单聊中消息已读的回执
sendReadReceiptMessage(params, callback(ret))
params
targetId:
- 类型:字符串
- 描述:目标会话ID
timestamp:
- 类型:数字
- 描述:该会话中已阅读的最后一条消息的发送时间戳
callback(ret)
ret:
- 类型:JSON对象
- 描述:设置后状态
- 内部字段:
{
status: , //布尔类型;状态
errorCode: , //数字;错误码;status为false时有值
}
示例代码
var rong = api.require('rcIM');
rong.sendReadReceiptMessage({targetId:1}, function(ret){
api.alert({msg:JSON.stringify(ret)});
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
addReceiveReadReceiptListener
添加收到已读回执的监听
addReadReceiptListener(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 描述:收到这个消息之后可以更新这个会话中 messageTime 以前的消息 UI 为已读(底层数据库消息状态已经改为已读)。
- 内部字段:
{
tId: //字符串类型;会话 id
messageTime: //数字类型;已阅读的最后一条消息的 sendTime
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.addReceiveReadReceiptListener(function(ret){
api.alert({msg:JSON.stringify(ret)});
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
setOnMessageRecalledListener
监听撤回消息
setOnMessageRecalledListener(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
messageId: 888 // 数值类型;被撤回的消息ID
}
示例代码
var rong = api.require('rcIM');
rong.setOnMessageRecalledListener(function(ret){
alert(JSON.stringify(ret));
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
sendReadReceiptRequest
发起群组消息回执请求。只能对自己发送的消息发起消息回执请求。
此功能目前仅在 GROUP 类型的会话中开放。用户可以对自己发送的消息发起阅读回执请求,发起后可以看到有多少人阅读过这条消息。
sendReadReceiptRequest(params, callback(ret))
params
messageId:
- 类型:数字类型
- 描述:消息id
callback(ret)
ret:
- 类型:JSON对象
- 描述:设置后状态
- 内部字段:
{
status: , //布尔类型;状态
errorCode: , //数字;错误码;status为false时有值
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.sendReadReceiptRequest({messageId:1}, function(ret){
api.alert({msg:JSON.stringify(ret)});
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
addReadReceiptListener
添加消息回执监听
您需要设置消息回执监听,以此来接收回执消息并更新消息的显示。
addReadReceiptListener(params, callback(ret))
params
target:
- 类型:字符串类型
- 描述:要监听的事件
- 默认:onMessageReceiptResponse
- 取值范围:
- onMessageReceiptResponse:在群组中发起了回执请求的用户,当收到接收方的响应时,会回调此方法。
- onMessageReceiptRequest:群组中,某人发起了回执请求,会话中其余人会收到该请求,并回调此方法。 接收方需要在合适的时机(读取了消息之后)调用sendReadReceiptResponse回复响应
callback(ret)
ret:
- 类型:JSON对象
- 描述:设置后状态
- 内部字段:
{
conversationType: //字符串类型;会话类型;
targetId: //字符串类型;会话 id
messageUId: //字符串类型;当target为onMessageReceiptResponse表示收到回执响应的消息的 uId,当target为onMessageReceiptRequest表示请求已读回执的消息 uId
respondUserIdList: //数组类型;当target为onMessageReceiptResponse时有值;会话中响应了此消息的用户列表;其内部为JSON类型,其中 userId: 用户 id ; time: 响应时间
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.addReadReceiptListener(function(ret){
api.alert({msg:JSON.stringify(ret)});
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
removeReadReceiptListener
移除消息回执监听
removeReadReceiptListener(params)
params
target:
- 类型:字符串类型
- 描述:要监听的事件
- 默认:onMessageReceiptResponse
- 取值范围:
- onMessageReceiptResponse
- onMessageReceiptRequest
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.removeReadReceiptListener(function(ret){
api.alert({msg:JSON.stringify(ret)});
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
sendReadReceiptResponse
如果在会话中收到了回执请求,接收者需要在合适的时机响应该请求,以通知发送者自己已经阅读了该消息。
sendReadReceiptResponse(params, callback(ret))
params
conversationType:
- 类型:字符串类型
- 描述:会话类型
- 默认值:GROUP
targetId:
- 类型:字符串类型
- 描述:targetId
messageId:
- 类型:数字类型
- 描述:消息id
callback(ret)
ret:
- 类型:JSON对象
- 描述:设置后状态
- 内部字段:
{
status: , //布尔类型;状态
errorCode: , //数字;错误码;status为false时有值
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.sendReadReceiptResponse({messageId:1,targetId:"2er"}, function(ret){
api.alert({msg:JSON.stringify(ret)});
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getOfflineMessageDuration
获取当前用户离线消息时间
getOfflineMessageDuration(callback(ret, err))
callback(ret)
ret:
- 类型:JSON 对象
- 描述:获取状态
- 内部字段:
{
status: true //布尔类型;获取到的状态
duration: '' //字符串类型;当前用户离线消息时间,单位:天
}
err:
- 类型:JSON 对象
- 描述:获取状态
- 内部字段:
{
errCode: '' //数字类型;错误码;详情参见:https://www.rongcloud.cn/docs/status_code.html#android_ios_code
}
示例代码
var rong = api.require('rcIM');
rong.getOfflineMessageDuration(function(ret, err) {
api.toast({ msg: JSON.stringify(ret) });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
setOfflineMessageDuration
设置当前用户离线消息存储时间
setOfflineMessageDuration(params, callback(ret, err))
params
duration:
- 类型:数字类型
- 描述:(可选项)用户离线消息存储时间(以天为单位),范围【1~7天】
- 默认值:1
callback(ret)
ret:
- 类型:JSON 对象
- 描述:获取状态
- 内部字段:
{
status: true //布尔类型;获取到的状态
time: '' //字符串类型;设置成功后的时间(毫秒值)(iOS不支持)
}
err:
- 类型:JSON 对象
- 描述:获取状态
- 内部字段:
{
errCode: '' //数字类型;错误码;详情参见:https://www.rongcloud.cn/docs/status_code.html#android_ios_code
}
示例代码
var rong = api.require('rcIM');
rong.setOfflineMessageDuration({duration:2}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret) });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getLatestMessages
获取某一会话的最新消息记录
getLatestMessages({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见 会话类型
targetId:
- 类型:字符串
- 描述:目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
count:
- 类型:数字
- 描述:要获取的消息数量
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:最新消息记录,按照时间顺序从新到旧排列。
- 内部字段:
{
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('rcIM');
// 之前调用 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
获取某一会话的历史消息记录
getHistoryMessages({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见 会话类型
targetId:
- 类型:字符串
- 描述:目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
oldestMessageId:
- 类型:数字
- 描述:最后一条消息的 Id,获取此消息之前的 count 条消息,没有消息第一次调用应设置为: -1
count:
- 类型:数字
- 描述:要获取的消息数量
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:最新消息记录,按照时间顺序从新到旧排列。
- 内部字段:
{
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('rcIM');
// 之前调用 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
按照消息类型获取历史消息记录
getHistoryMessagesByObjectName({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见 会话类型
targetId:
- 类型:字符串
- 描述:目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
objectName:
- 类型:字符串
- 描述:消息类型标识
oldestMessageId:
- 类型:数字
- 描述:最后一条消息的 Id,获取此消息之前的 count 条消息,没有消息第一次调用应设置为: -1
count:
- 类型:数字
- 描述:要获取的消息数量
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:最新消息记录,按照时间顺序从新到旧排列。
- 内部字段:
{
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('rcIM');
// 之前调用 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 及更高版本
getRemoteHistoryMessages
获取历史消息记录(特别说明:调用此方法需要开启历史消息漫游;当用户因换设备或重装app导致本地本地存储丢失的情况,可用此方法获取记录;此方法返回值中messageId均为0,融云服务器不会保存此值)
此方法从服务器端获取之前的历史消息,但是必须先开通历史消息云存储功能。 例如,本地会话中有10条消息,您想拉取更多保存在服务器的消息的话,recordTime应传入最早的消息的发送时间戳,count传入1~20之间的数值。
getRemoteHistoryMessages({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见 会话类型;不支持传入 RCConversationType.CHATROOM。
targetId:
- 类型:字符串
- 描述:目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
dateTime :
- 类型:日期
- 描述:从该时间点开始获取消息。即:消息中的 sentTime;第一次可传 0,再次取值此参数可传入上一次获取的最后一条记录的sentTime值。
count:
- 类型:数字
- 描述:要获取的消息数量(1-20条)
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:最新消息记录,按照时间顺序从新到旧排列。
- 内部字段:
{
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('rcIM');
// 之前调用 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
删除指定的一条或者一组消息
deleteMessages({params}, callback(ret, err))
params
messageIds:
- 类型:数字数组
- 描述:要删除的消息 Id 数组
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' // 状态码:success / error
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.deleteMessages({
messageIds: [688, 689]
}, function(ret, err) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
clearMessages
清空某一会话的所有聊天消息记录
clearMessages({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见 会话类型
targetId:
- 类型:字符串
- 描述:目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' //字符串类型;状态码:success / error
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.clearMessages({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
recallMessage
撤回消息
recallMessage({params}, callback(ret, err))
params
messageId:
- 类型:字符串
- 描述:消息ID
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' //字符串类型;状态码:success / error
messageId: 888 // 数值类型;撤回的消息ID,该消息已经变更为新的消息;(android不支持)
operatorId: '' //字符串类型;发起撤回消息的用户id;(ios不支持)
recallTime: //数值类型; 撤回的时间(毫秒)(ios不支持)
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: 1 //数值类型;错误code
}
示例代码
var rong = api.require('rcIM');
rong.recallMessage({
messageId:888
}, function(ret, err){
if (ret.success) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getTotalUnreadCount
获取所有未读消息数
getTotalUnreadCount(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success', //字符串类型;状态码,success|error
result: 12 //数字类型;未读消息数
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.getTotalUnreadCount(function(ret, err) {
api.toast({ msg: ret.result });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getUnreadCount
获取来自某用户(某会话)的未读消息数
getUnreadCount({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见 会话类型
targetId:
- 类型:字符串
- 描述:目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success', //字符串类型;状态码,success|error
result: 12 //数字类型;未读消息数
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.getUnreadCount({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.result });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getUnreadCountByConversationTypes
获取某(些)会话类型的未读消息数
getUnreadCountByConversationTypes({params}, callback(ret))
params
conversationTypes:
- 类型:字符串数组
- 描述:消息的会话类型,参见 会话类型
callback(ret)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success', //字符串类型;状态码,success|error
result: 12 //数字类型;未读消息数
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.getUnreadCountByConversationTypes({
conversationTypes: ['PRIVATE', 'GROUP']
}, function(ret, err) {
api.toast({ msg: ret.result });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getUnreadMentionedMessages
获取某会话里未读的@消息。
getUnreadMentionedMessages({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见 会话类型
targetId:
- 类型:字符串
- 描述:目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:未读的@消息。
- 内部字段:
{
status: 'success', //字符串类型;状态码,success|error
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('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.getUnreadMentionedMessages({
conversationType: 'GROUP',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
setMessageReceivedStatus
设置接收到的消息状态
setMessageReceivedStatus({params}, callback(ret, err))
params
messageId:
- 类型:数字
- 描述:消息 Id
receivedStatus:
- 类型:字符串
- 描述:设置接收到的消息状态,参见 接收到的消息状态
- 特别说明:此参数在1.0版本中为数字类型,在2.0版本中统一了消息状态,变更为字符串类型
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' //字符串类型;状态码:success / error
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.setMessageReceivedStatus({
messageId: '688',
receivedStatus: 'READ'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
setMessageSentStatus
设置消息发送状态
setMessageSentStatus({params}, callback(ret, err))
params
messageId:
- 类型:数字
- 描述:消息 Id
sentStatus :
- 类型:字符串
- 描述:发送出的消息的状态枚举,参见 发送状态;
callback(ret)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' //字符串类型;状态码:success / error
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.setMessageSentStatus({
messageId: 8,
sentStatus: 'READ'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
clearMessagesUnreadStatus
清除某一会话的消息未读状态
clearMessagesUnreadStatus({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见 会话类型
targetId:
- 类型:字符串
- 描述:目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' //字符串类型;状态码:success / error
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.clearMessagesUnreadStatus({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
sendTypingStatus
向会话中发送正在输入的状态。
注意:在 6 秒之内,如果同一个用户在同一个会话中多次调用此接口发送正在输入的状态,为保证产品体验和网络优化,将只有最开始的一次生效。目前本接口仅支持单聊。
sendTypingStatus({params})
params
conversationType:
- 类型:字符串
- 描述:(可选项)消息的会话类型,通过改变消息会话类型,可以发送单聊消息、讨论组消息、群聊消息、聊天室消息等,参见 会话类型
- 默认值:PRIVATE
targetId:
- 类型:字符串
- 描述:消息的接收方 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
objectName:
- 类型:字符串
- 描述:正在输入的消息的类型名,如文本消息,应该传类型名”RC:TxtMsg”。会话中的其他用户输入状态回执中会收到此消息类型,可以通过此消息类型,自定义不同的输入状态提示(如:正在输入、正在讲话、正在拍摄等)。
- 取值范围:
- RC:TxtMsg 文本消息
- RC:VcMsg 语音类型
- RC:ImgMsg 图片类型
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.sendTypingStatus({
conversationType: 'PRIVATE',
targetId: '9527',
objectName: 'RC:TxtMsg'
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
addTypingStatusListener
监听对方输入状态
addTypingStatusListener(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 描述:正在输入的信息
- 内部字段:
{
conversationType: , //字符串类型;会话类型
targetId: , //字符串类型;会话目标ID
userTypingStatusList:[] //数字类型;正在输入的用户列表
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.addTypingStatusListener(function(ret){
api.alert({msg:JSON.stringify(ret)});
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
setMessageExtra
设置消息的附加信息,此信息只保存在本地
setMessageExtra({params}, callback(ret, err))
params
messageId:
- 类型:数字
- 描述:消息 Id
value:
- 类型:字符串
- 描述:消息附加信息,最大 1024 字节
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' //字符串类型;状态码:success / error
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.setMessageExtra({
messageId: '688',
value: 'extra info'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getTextMessageDraft
获取某一会话的文字消息草稿
getTextMessageDraft({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见 会话类型
targetId:
- 类型:字符串
- 描述:目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' //字符串类型;状态码:success / error
result: 'Hello w' //字符串类型;草稿的文字内容
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.getTextMessageDraft({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.result });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
saveTextMessageDraft
保存某一会话的文字消息草稿
saveTextMessageDraft({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见 会话类型
targetId:
- 类型:字符串
- 描述:目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
content:
- 类型:字符串
- 描述:草稿的文字内容
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' //字符串类型;状态码:success / error
}
示例代码
var rong = api.require('rcIM');
// 之前调用 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
清除某一会话的文字消息草稿
clearTextMessageDraft({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见 会话类型
targetId:
- 类型:字符串
- 描述:目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' //字符串类型;状态码:success / error
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.clearTextMessageDraft({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getConversationList
获取会话列表
会话列表按照时间从前往后排列,如果有置顶会话,则置顶会话在前
getConversationList(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:会话列表
- 内部字段:
{
status: 'success', //字符串类型;状态码,success | error
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('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.getConversationList(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getTopConversationList
获取置顶会话列表
getTopConversationList(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 描述:会话列表
- 内部字段:
{
status: 'success', //字符串类型;状态码,success | error
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('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.getTopConversationList(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getBlockedConversationList
获取屏蔽消息的会话列表
getBlockedConversationList(params, callback(ret))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见会话类型(ios不支持)
- 默认值:PRIVATE
callback(ret)
ret:
- 类型:JSON 对象
- 描述:会话列表
- 内部字段:
{
status: 'success', //字符串类型;状态码,success | error
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('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.getBlockedConversationList(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getConversationListByCount
分页获取会话列表
会话列表按照时间从前往后排列,如果有置顶会话,则置顶会话在前
getConversationListByCount({params},callback(ret, err))
params
typeList:
- 类型:数组
- 描述:(可选项)回话类型组成的数组
- 默认值:[‘private’,’group’,’discussion’,’system’]
- 取值范围:
- private:单聊
- discussion:讨论组
- group:群组
- chatroom:聊天室
- customerService:客服
- system:系统会话
- appService:应用内公众服务会话
- publicService:跨应用公众服务会话
- pushService:推送服务会话
count:
- 类型:数字
- 描述:(可选项)获取的数量
- 默认:10
startTime:
- 类型:数字
- 描述:(可选项)会话的时间戳(获取这个时间戳之前的会话列表,0表示从最新开始获取)
- 默认:0
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:会话列表
- 内部字段:
{
status: 'success', //字符串类型;状态码,success | error
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('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.getConversationListByCount(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getConversation
获取某一会话信息
getConversation({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见会话类型
targetId:
- 类型:字符串
- 描述:目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:会话信息
- 内部字段:
{
status: 'success', //字符串类型;状态码,success | error
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('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.getConversation({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
removeConversation
从会话列表中移除某一会话,但是不删除会话内的消息
如果此会话中有新的消息,该会话将重新在会话列表中显示,并显示最近的历史消息
removeConversation({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见 会话类型
targetId:
- 类型:字符串
- 描述:目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' //字符串类型;状态码,success | error
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.removeConversation({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
clearConversations
清空所有会话及会话消息
clearConversations({params}, callback(ret, err))
params
conversationTypes:
- 类型:数组
- 描述:消息的会话类型组成的数组,参见 会话类型
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' //字符串类型;状态码,success | error
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.clearConversations({
conversationTypes: ['PRIVATE', 'GROUP']
}, function(ret, err) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
setConversationToTop
设置某一会话为置顶或者取消置顶
setConversationToTop({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见 会话类型
targetId:
- 类型:字符串
- 描述:目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
isTop:
- 类型:布尔
- 描述:是否置顶
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' //字符串类型;状态码,success | error
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.setConversationToTop({
conversationType: 'PRIVATE',
targetId: '9527',
isTop: true
}, function(ret, err) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getMessageCount
获取某一会话信息数量
getMessageCount({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见会话类型
targetId:
- 类型:字符串
- 描述:目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:会话信息
- 内部字段:
{
status: 'success', //字符串类型;状态码,success | error
result: {
count: // 数字类型;当前会话消息数
}
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.getMessageCount({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
可用性
iOS 系统
可提供的 1.0.0 及更高版本
searchConversations
搜索本地历史消息
searchConversations({params}, callback(ret))
params
conversationTypes:
- 类型:数组类型
- 描述:搜索的会话类型,参见 会话类型
objectNames:
- 类型:数组类型
- 描述:搜索的消息类型。比如:RC:TxtMsg;详情参见:http://docs.rongcloud.cn/android_message.html#_内置内容类消息
keyword:
- 类型:字符串类型
- 描述: 搜索的关键字
callback(ret)
ret:
- 类型:JSON 对象
- 描述:会话信息
- 内部字段:
{
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('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.searchConversations({
conversationTypes: ['PRIVATE'],
objectNames: ['RC:TxtMsg'],
keyword:'hello'
}, function(ret) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
searchMessages
根据会话,搜索本地历史消息。
searchMessages({params}, callback(ret))
params
conversationType:
- 类型:字符串类型
- 描述:指定的会话类型,参见 会话类型
targetId:
- 类型:字符串类型
- 描述:指定的会话 id
keyword:
- 类型:字符串类型
- 描述: 搜索的关键字
count:
- 类型:数字类型
- 描述: 返回的搜索结果数量(iOS平台为返回的最大搜索结果数量), 安卓平台传0时会返回所有搜索到的消息, 非0时,逐页返回
- 默认值:0
beginTime:
- 类型:数字类型
- 描述: 查询记录的起始时间, 传0时从最新消息开始搜索。(单位:毫秒值)
- 默认值:0
callback(ret)
ret:
- 类型:JSON 对象
- 描述:会话信息
- 内部字段:
{
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('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.searchMessages({
conversationType: 'PRIVATE',
targetId: '1234',
keyword:'hello'
}, function(ret) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
createDiscussion
创建讨论组
createDiscussion({params}, callback(ret, err))
params
name:
- 类型:字符串
- 描述:讨论组名称,如:当前所有成员的名字的组合。
userIdList:
- 类型:字符串数组
- 描述:讨论组成员 Id 列表
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success', //字符串类型;状态码:success / error
result: {
discussionId: "1b9f7abe-a5ae-463d-8ff8-d96deaf40b59" // 创建成功的讨论组 Id
}
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: 30003 //数字类型;错误码
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
示例代码
var rong = api.require('rcIM');
// 之前调用 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
获取讨论组信息和设置
getDiscussion({params}, callback(ret, err))
params
discussionId:
- 类型:字符串
- 描述:讨论组 Id
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
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:
- 类型:JSON 对象
- 内部字段:
{
code: 30003 //数字类型;错误码
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
示例代码
var rong = api.require('rcIM');
// 之前调用 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
设置讨论组名称
setDiscussionName({params}, callback(ret, err))
params
discussionId:
- 类型:字符串
- 描述:讨论组 Id
name:
- 类型:字符串
- 默认值:无
- 描述:讨论组名称
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' //字符串类型;状态码:success / error
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: 30003 //数字类型;错误码
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
示例代码
var rong = api.require('rcIM');
// 之前调用 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
添加一名或者一组用户加入讨论组
addMemberToDiscussion({params}, callback(ret, err))
params
discussionId:
- 类型:字符串
- 描述:讨论组 Id
userIdList:
- 类型:字符串数组
- 描述:邀请的用户 Id 列表
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' , //字符串类型;状态码:success / error
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: 30003 //数字类型;错误码
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
示例代码
var rong = api.require('rcIM');
// 之前调用 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 及更高版本
removeMemberFromDiscussion
供创建者将某用户移出讨论组
移出自己或者调用者非讨论组创建者将产生 -1 未知错误
removeMemberFromDiscussion({params}, callback(ret, err))
params
discussionId:
- 类型:字符串
- 描述:讨论组 Id
userId:
- 类型:字符串
- 描述:用户 Id
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' , //字符串类型;状态码:success / error
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: 30003 //数字类型;错误码
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
示例代码
var rong = api.require('rcIM');
// 之前调用 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
退出当前用户所在的某讨论组
quitDiscussion({params}, callback(ret, err))
params
discussionId:
- 类型:字符串
- 默认值:无
- 描述:讨论组 Id
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' , //字符串类型;状态码:success / error
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: 30003 //数字类型;错误码
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
示例代码
var rong = api.require('rcIM');
// 之前调用 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
设置讨论组成员邀请权限
setDiscussionInviteStatus({params}, callback(ret, err))
params
discussionId:
- 类型:字符串
- 描述:讨论组 Id
inviteStatus:
- 类型:字符串
- 描述:邀请状态,默认为开放,参见 讨论组邀请状态
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' , //字符串类型;状态码:success / error
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: 30003 //数字类型;错误码
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
示例代码
var rong = api.require('rcIM');
// 之前调用 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 及更高版本
joinChatRoom
当前用户加入某聊天室
joinChatRoom({params}, callback(ret, err))
params
chatRoomId:
- 类型:字符串
- 描述:聊天室 Id
defMessageCount:
- 类型:数字
- 描述:进入聊天室拉取消息数目
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' , //字符串类型;状态码:success / error
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: 30003 //数字类型;错误码
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
示例代码
var rong = api.require('rcIM');
// 之前调用 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.0 及更高版本
quitChatRoom
当前用户退出某聊天室
quitChatRoom({params}, callback(ret, err))
params
chatRoomId:
- 类型:字符串
- 描述:聊天室 Id
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' , //字符串类型;状态码:success / error
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: 30003 //数字类型;错误码
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
示例代码
var rong = api.require('rcIM');
// 之前调用 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.0 及更高版本
addToBlacklist
将某个用户加到黑名单中
addToBlacklist({params}, callback(ret, err))
params
userId:
- 类型:字符串
- 描述:要加入黑名单的用户 Id
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' //字符串类型;状态码:success / error
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.addToBlacklist({
userId: '688'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
removeFromBlacklist
将个某用户从黑名单中移出
removeFromBlacklist({params}, callback(ret, err))
params
userId:
- 类型:字符串
- 描述:要移出黑名单的用户 Id
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' //字符串类型;状态码:success / error
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.removeFromBlacklist({
userId: '688'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getBlacklistStatus
获取某用户是否在黑名单中
getBlacklistStatus({params}, callback(ret, err))
params
userId:
- 类型:字符串
- 描述:要查询的用户 Id
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success', //字符串类型;状态码:success / error
result: 1 //数字类型;1-不在黑名单;0-在黑名单
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.getBlacklistStatus({
userId: '688'
}, function(ret, err) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getBlacklist
获取当前用户的黑名单列表
getBlacklist(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' , //字符串类型;状态码:success / error
result: ['aaa','bbb']
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.getBlacklist(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
addCallReceiveListener
音视频来电事件监听
addCallReceiveListener(params)
params
target:
- 类型:字符串
- 描述:要监听的事件
- 默认:didReceiveCall
- 取值范围:
- didReceiveCall:收到来电的事件
- didReceiveCallRemoteNotification: 接收到通话呼入的远程通知的事件 (android不支持)
- didCancelCallRemoteNotification:接收到取消通话的远程通知的事件 (android不支持)
callback(ret)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
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('rcIM');
rong.addCallReceiveListener({
target:'didReceiveCall'
},function(ret){
console.log(JSON.stringify(ret))
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
removeCallReceiveListener
移除音视频来电事件监听
removeCallReceiveListener(params)
params
target:
- 类型:字符串
- 描述:要移除的来电监听的事件
- 默认:didReceiveCall
- 取值范围:
- didReceiveCall:收到来电的事件
- didReceiveCallRemoteNotification: 接收到通话呼入的远程通知的事件 (android不支持)
- didCancelCallRemoteNotification:接收到取消通话的远程通知的事件 (android不支持)
示例代码
var rong = api.require('rcIM');
rong.removeCallReceiveListener({
target:'didReceiveCall'
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
startCall
发起音视频通话 (注:android上在发起语音通话时需要麦克风的权限,发起视频通话时需要相机的权限)
startCall(params)
params
targetId:
- 类型:字符串
- 描述:目标会话ID
conversationType:
- 类型:字符串
- 描述:(可选项)消息的会话类型,参见 会话类型
mediaType:
- 类型:字符串
- 描述:(可选项)发起的通话媒体类型
- 默认:audio
- 取值范围:
- audio:音频
- video:视频
userIdList:
- 类型:字符串
- 描述:(可选项)邀请的用户 ID 列表
- 默认:[]
extra:
- 类型:字符串
- 描述:(可选项)附件信息
callback(ret)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
callSession:{} //JSON对象;与getCallSession接口返回的参数一致(android回调中callSession中只有callId字段)
}
示例代码
var rong = api.require('rcIM');
rong.startCall({
targetId:'didReceiveCall',
mediaType:,
conversationType:,
extra:,
userIdList
},function(ret){
console.log(JSON.stringify(ret))
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
addCallSessionListener
音视频通话事件的监听
注意:接听端接听来电(音视频)的行为在 iOS 平台不会触发remoteUserDidJoin(对端用户加入了通话的事件)和didConnect(收通话已接通的事件)事件。在 android 平台会触发 remoteUserDidJoin 和 didConnect 事件。
addCallSessionListener(params)
params
target:
- 类型:字符串
- 描述:要监听的事件
- 默认:didConnect
- 取值范围:
- callOutgoing:电话已拨出事件(ios不支持)
- didConnect:收通话已接通的事件
- didDisconnect:通话已结束的事件
- remoteUserDidRing:对端用户正在振铃的事件
- remoteUserDidInvite:有用户被邀请加入通话的事件
- remoteUserDidJoin:对端用户加入了通话的事件
- remoteUserDidChangeMediaType:对端用户切换了媒体类型的事件
- remoteUserDidDisableCamera:对端用户开启或关闭了摄像头的状态的事件
- remoteUserDidLeft:对端用户挂断
- shouldAlertForWaitingRemoteResponse:彩铃事件(android不支持)
- shouldRingForIncomingCall:来电铃声的事件(android不支持)
- shouldStopAlertAndRing:停止播放铃声(通话接通或挂断)的事件(android不支持)
- errorDidOccur:通话过程中的错误事件
- networkTxQuality:当前通话网络状态,每两秒触发一次(android不支持)
- networkSendLost:发送的丢帧率(ios不支持)
- networkReceiveLost:接收的丢帧率(ios不支持)
callback(ret)
ret:
- 类型:JSON 对象
- 描述:监听事件返回,其中callOutgoing、callDidConnect、callDidDisconnect(android上会有disConnectReason参数回调)、shouldAlertForWaitingRemoteResponse、shouldRingForIncomingCall、shouldStopAlertAndRing只返回事件,无参数返回
- 内部字段:
{
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不支持)
}
示例代码
var rong = api.require('rcIM');
rong.addCallSessionListener({
target:'didConnect'
},function(ret){
console.log(JSON.stringify(ret))
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
removeCallSessionListener
移除音视频来电事件监听
removeCallSessionListener(params)
params
target:
- 类型:字符串
- 描述:要移除的来电监听的事件
- 默认:didConnect
- 取值范围:
- callOutgoing:电话已拨出事件(ios不支持)
- didConnect:收通话已接通的事件
- didDisconnect:通话已结束的事件
- remoteUserDidRing:对端用户正在振铃的事件
- remoteUserDidInvite:有用户被邀请加入通话的事件
- remoteUserDidJoin:对端用户加入了通话的事件
- remoteUserDidChangeMediaType:对端用户切换了媒体类型的事件 (注:android上端在调用changeMediaType接口后会监听到此事件)
- remoteUserDidDisableCamera:对端用户开启或关闭了摄像头的状态的事件
- remoteUserDidLeft:对端用户挂断
- shouldAlertForWaitingRemoteResponse:彩铃事件(android不支持)
- shouldRingForIncomingCall:来电铃声的事件(android不支持)
- shouldStopAlertAndRing:停止播放铃声(通话接通或挂断)的事件(android不支持)
- errorDidOccur:通话过程中的错误事件
- networkTxQuality:当前通话网络状态,每两秒触发一次 (android不支持)
- networkSendLost:发送的丢帧率(ios不支持)
- networkReceiveLost:接收的丢帧率(ios不支持)
示例代码
var rong = api.require('rcIM');
rong.removeCallSessionListener({
target:'didConnect'
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getCallSession
获取当前通话实体,通话实体中维护着当前通话的所有信息。
getCallSession(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 描述:当前通话实体
- 内部字段:
{
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('rcIM');
rong.getCallSession(function(ret) {
api.alert({msg:JSON.stringify(ret)});
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
isCallEnabled
判断当前是否支持音视频通话 (注:android上此接口用来判断音视频引擎是否可用)
isCallEnabled(params,callback(ret))
params
conversationType:
- 类型:字符串
- 描述:(可选项)消息的会话类型,参见 会话类型 (android不支持)
mediaType:
- 类型:字符串
- 描述:(可选项)发起的通话媒体类型 (android不支持)
- 默认:audio
- 取值范围:
- audio:音频
- video:视频
callback(ret)
ret:
- 类型:JSON对象
- 描述:当前通话实体
- 内部字段:
{
enabled: //布尔类型;是否支持
}
示例代码
var rong = api.require('rcIM');
var params = {
conversationType:'',
mediaType:'audio'
};
rong.isCallEnabled(params,function(ret){
if(ret.enabled)
alert('支持');
});
可用性
iOS 系统
可提供的 1.0.0 及更高版本
setVideoProfile
设置本地视频属性,可用此接口设置本地视频分辨率,设置宽和高替换
setVideoProfile(params)
params
profile:
- 类型:字符串
- 描述:(可选项)通话视频参数
- 默认:480P
- 取值范围:
- 240P:320x240, 15fps, 200kbps
- 360P:480x360, 15fps, 350kbps
- 480P:640x480, 15fps, 500kbps
- 720P:1280x720, 15fps, 1000kbps
swapWidthAndHeight:
- 类型:布尔
- 描述:(可选项)是否交换宽和高 (android不支持)
- 默认:false
示例代码
var rong = api.require('rcIM');
rong.setVideoProfile({
swapWidthAndHeight:true,
profile:‘480P’
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
setEnableBeauty
设置本地视频属性,是否使用默认美颜
setEnableBeauty(params)
params
enableBeauty:
- 类型:布尔
- 描述:(可选项)是否使用美颜
- 默认:false
示例代码
var rong = api.require('rcIM');
rong.setEnableBeauty({
enableBeauty:true
});
可用性
iOS 系统
可提供的 1.0.0 及更高版本
accept
设接听来电
accept(params)
params
mediaType:
- 类型:字符串
- 描述:(可选项)接听使用的媒体类型 (android不支持)
- 默认:audio
- 取值范围:
- audio:音频
- video:视频
callId :
- 类型: 字符串
- 描述:呼叫id (ios不支持)
示例代码
var rong = api.require('rcIM');
rong.accept({
mediaType:'audio'
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
hangup
挂断
hangup()
示例代码
var rong = api.require('rcIM');
rong.hangup();
可用性
iOS系统,Android系统
可提供的 3.1.7 及更高版本
addParticipants
邀请用户加入当前通话 (仅限讨论组和群组)
addParticipants(params)
params
userIds:
- 类型:数组类型
- 描述:邀请的用户 ID 列表
observerUserIds:
- 类型:数组类型
- 描述:邀请的观察者列表,没有观察者可以不传(iOS不支持)
- 默认值:空
示例代码
var rong = api.require('rcIM');
var params = {
userIds : ['1234', '0000']
};
rong.addParticipants(params);
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
setVideoView
打开视频区域
setVideoView({params})
params
rect:
- 类型:JSON 对象
- 描述:(可选项)视频的位置及尺寸
- 内部字段:
{
x: 0, //(可选项)数字类型;地图左上角的 x 坐标(相对于所属的 Window 或 Frame);默认:0
y: 0, //(可选项)数字类型;地图左上角的 y 坐标(相对于所属的 Window 或 Frame);默认:0
w: 320, //(可选项)数字类型;地图的宽度;默认:'auto'
h: 480 //(可选项)数字类型;地图的高度;默认:'auto'
}
userId:
- 类型:字符串
- 描述:用户 ID
renderModel:
- 类型:字符串
- 描述:(可选项)设视频显示模式 (android不支持)
- 默认值:adaptive
- 取值范围:
- hidden:如果视频尺寸与显示视窗尺寸不一致,则视频流会按照显示视窗的比例进行周边裁剪或图像拉伸后填满视窗
- fit:如果视频尺寸与显示视窗尺寸不一致,在保持长宽比的前提下,将视频进行缩放后填满视窗
- adaptive:如果自己和对方都是竖屏,或者如果自己和对方都是横屏,使用hidden,如果对方和自己一个竖屏一个横屏,则使用fit
bg:
- 类型:字符串
- 描述:(可选项)背景配置,支持rgb、rgba()、#、img(本地路径)
- 默认值:#000000
fixedOn:
- 类型:字符串类型
- 描述:(可选项)视频视图添加到指定 frame 的名字(只指 frame,传 window 无效)
- 默认:模块依附于当前 window
fixed:
- 类型:布尔
- 描述:(可选项)视频是否随所属 window 或 frame 滚动
- 默认值:true(不随之滚动)
示例代码
var rong = api.require('rcIM');
rong.setVideoView({
rect: {
x: 0,
y: 0,
w: 320,
h: 300
},
bg: '#ff0000',
renderModel: 'fit',
fixedOn: api.frameName,
fixed: true
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
resetVideoView
重设打开的视频区域
resetVideoView({params})
params
rect:
- 类型:JSON 对象
- 描述:(可选项)视频的位置及尺寸
- 内部字段:
{
x: 0, //(可选项)数字类型;地图左上角的 x 坐标(相对于所属的 Window 或 Frame);默认:0
y: 0, //(可选项)数字类型;地图左上角的 y 坐标(相对于所属的 Window 或 Frame);默认:原值
w: 320, //(可选项)数字类型;地图的宽度;默认:'auto'
h: 480 //(可选项)数字类型;地图的高度;默认:'auto'
}
userId:
- 类型:字符串
- 描述:用户 ID
renderModel:
- 类型:字符串
- 描述:(可选项)设视频显示模式 (android不支持)
- 默认值:adaptive
- 取值范围:
- hidden:如果视频尺寸与显示视窗尺寸不一致,则视频流会按照显示视窗的比例进行周边裁剪或图像拉伸后填满视窗
- fit:如果视频尺寸与显示视窗尺寸不一致,在保持长宽比的前提下,将视频进行缩放后填满视窗
- adaptive:如果自己和对方都是竖屏,或者如果自己和对方都是横屏,使用hidden,如果对方和自己一个竖屏一个横屏,则使用fit
bg:
- 类型:字符串
- 描述:(可选项)背景配置,支持rgb、rgba()、#、img(本地路径)
- 默认值:#000000
animationDuration:
- 类型:数字类型
- 描述:(可选项)改变位置大小时添加的动画效果时长,为负数或0时表示没动画效果
- 默认值:-1
示例代码
var rong = api.require('rcIM');
rong.resetVideoView({
rect: {
x: 0,
y: 0,
w: 320,
h: 300
},
bg: '#ff0000',
renderModel: 'fit'
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
removeVideoView
关闭移除打开的视频区域
removeVideoView({params})
params
userId:
- 类型:字符串
- 描述:用户 ID
示例代码
var rong = api.require('rcIM');
rong.removeVideoView({
userId: 'a2'
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
addVideoViewListener
添加视频区域的监听
addVideoViewListener(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 描述:返回监听事件
- 内部字段:
{
userId: '' //字符串类型;单击的用户ID
}
示例代码
var rong = api.require('rcIM');
rong.addVideoViewListener(function(ret){
api.alert(JSON.stringify(ret));
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
changeMediaType
改变当前通话的媒体类型
changeMediaType({params})
params
mediaType:
- 类型:字符串
- 描述:(可选项)接听使用的媒体类型
- 默认:audio
- 取值范围:
- audio:音频
- video:视频
示例代码
var rong = api.require('rcIM');
rong.changeMediaType({
mediaType: 'audio'
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
isMuted
是否是静音
isMuted(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 描述:返回接口
- 内部字段:
{
isMuted: //布尔类型;是否静音
}
示例代码
var rong = api.require('rcIM');
rong.isMuted(function(ret){
if(ret.isMuted) alert('静音')
});
可用性
iOS 系统
可提供的 1.0.0 及更高版本
setMuted
设置静音
setMuted({params},callback(ret))
params
muted:
- 类型:布尔
- 描述:(可选项)是否静音
- 默认:false
callback(ret)
ret:
- 类型:JSON对象
- 描述:返回接口 (android不支持)
- 内部字段:
{
status: //布尔类型;是否设置成功
}
示例代码
var rong = api.require('rcIM');
rong.setMuted({
muted: true
},function(ret){
if(ret.status) alert("设置成功");
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
speakerEnabled
是否打开扬声器
speakerEnabled(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 描述:返回接口 (android不支持)
- 内部字段:
{
speakerEnabled: //布尔类型;是否是扬声器播放
}
示例代码
var rong = api.require('rcIM');
rong.speakerEnabled(function(ret){
if(ret.speakerEnabled) alert('扬声器')
});
可用性
iOS 系统
可提供的 1.0.0 及更高版本
setSpeakerEnabled
设置扬声器状态
setSpeakerEnabled({params},callback(ret))
params
speakerEnabled:
- 类型:布尔
- 描述:(可选项)是否开启扬声器
- 默认:false
callback(ret)
ret:
- 类型:JSON对象
- 描述:返回接口 (android不支持)
- 内部字段:
{
status: //布尔类型;是否设置成功
}
示例代码
var rong = api.require('rcIM');
rong.setSpeakerEnabled({
speakerEnabled: true
},function(ret){
if(ret.status) alert('设置成功');
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
cameraEnabled
是否开启摄像头
cameraEnabled(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 描述:返回接口
- 内部字段:
{
cameraEnabled: //布尔类型;是否开启摄像头
}
示例代码
var rong = api.require('rcIM');
rong.cameraEnabled(function(ret){
if(ret.cameraEnabled) alert('扬声器')
});
可用性
iOS 系统
可提供的 1.0.0 及更高版本
setCameraEnabled
设置打开摄像头
setCameraEnabled({params},callback(ret))
params
cameraEnabled:
- 类型:布尔
- 描述:(可选项)是否打开摄像头
- 默认:false
callback(ret)
ret:
- 类型:JSON对象
- 描述:返回接口 (android不支持)
- 内部字段:
{
status: //布尔类型;是否设置成功
}
示例代码
var rong = api.require('rcIM');
rong.setCameraEnabled({
cameraEnabled: true
},function(ret){
if(ret.status) alert('设置成功');
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
switchCameraMode
切换摄像头
switchCameraMode(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 描述:返回接口 (android不支持)
- 内部字段:
{
status: //布尔类型;是否切换成功
}
示例代码
var rong = api.require('rcIM');
rong.switchCameraMode(function(ret){
if(ret.status) alert('切换成功');
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
startAudioRecording
开始声音录制,目前只支持录制wav格式音频文件, 请给出完整沙盒路径+文件名
startAudioRecording({params},callback(ret))
params
filePath:
- 类型:字符串
- 描述:录制文件保存路径
callback(ret)
ret:
- 类型:JSON对象
- 描述:返回接口 (android不支持)
- 内部字段:
{
status: //数字类型;设置结果
//-1:路径错误
}
示例代码
var rong = api.require('rcIM');
rong.startAudioRecording({
filePath: 'fs://123.wav'
},function(ret){
if(ret.status) alert('设置成功');
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
stopAudioRecording
停止录音
stopAudioRecording(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 描述:返回接口 (android不支持)
- 内部字段:
{
status: //布尔类型;是否停止成功
}
示例代码
var rong = api.require('rcIM');
rong.stopAudioRecording(function(ret){
if(ret.status) alert('停止成功');
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
disableLocalNotification
设置本地消息不提示
disableLocalNotification(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' // 状态码:success / error
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.disableLocalNotification(function(ret, err) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
enableLocalNotification
设置本地消息提示
enableLocalNotification(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' // 状态码:success / error
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.enableLocalNotification(function(ret, err) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
configLocalNotification
配置本地推送相关参数
configLocalNotification({params})
params
alertTitle:
- 类型:字符串
- 描述:进入后台两分钟内收到通知的显示内容,不传则显示消息内容
- 默认值:您收到了一条新消息
showNickname:
- 类型:布尔
- 描述:推送提示是否显示昵称,注:设置昵称的方式为:在发送消息接口的extra字段中填写昵称信息,格式为extra:{userInfo:{nickName:”用户昵称”}}
- 默认值:false
示例代码
var rong = api.require('rcIM');
rong.configLocalNotification({
showNickname: true,
alertTitel:'APICloud'
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getConversationNotificationStatus
获取某一会话的通知状态
getConversationNotificationStatus({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见 会话类型
targetId:
- 类型:字符串
- 描述:目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success', // 字符串类型;状态码:success / error
result: {
code: 0 // 状态码,0:免打扰 / 1:提醒
notificationStatus: 'DO_NOT_DISTURB' // 参见 会话通知提醒状态 枚举
}
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: 30003 //数字类型;错误码
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
示例代码
var rong = api.require('rcIM');
// 之前调用 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
设置某一会话的通知状态
setConversationNotificationStatus({params}, callback(ret, err))
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见 会话类型
targetId:
- 类型:字符串
- 描述:目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
notificationStatus:
- 类型:字符串
- 描述:会话通知提醒状态,参见 会话通知提醒状态
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success', //字符串类型;状态码:success / error
result: {
code: 0 // 状态码,0:免打扰 / 1:提醒
notificationStatus: "DO_NOT_DISTURB" // 参见 会话通知提醒状态 枚举
}
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: 30003 //数字类型;错误码
}
状态码说明:
状态码 | 说明 |
---|---|
300003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
示例代码
var rong = api.require('rcIM');
// 之前调用 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 及更高版本
setNotificationQuietHours
设置消息通知免打扰时间,此方法会屏蔽该会话在该时间段的远程推送;
setNotificationQuietHours({params}, callback(ret, err))
params
startTime:
- 类型:字符串
- 描述:起始时间 格式 HH:MM:SS
spanMinutes:
- 类型:数字
- 描述:间隔分钟数 0 < spanMinutes < 1440。
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' //字符串类型;状态码:success / error
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.setNotificationQuietHours({
startTime: '22:00:00',
spanMinutes: 6
}, function(ret, err) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
removeNotificationQuietHours
移除消息通知免打扰时间
removeNotificationQuietHours(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' //字符串类型;状态码:success / error
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.removeNotificationQuietHours(function(ret, err) {
api.toast({ msg: ret.status });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
getNotificationQuietHours
获取消息通知免打扰时间
getNotificationQuietHours(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
status: 'success' , //字符串类型;状态码:success / error
result: {
startTime: "22:00:00", //字符串类型;起始时间
spanMinutes: 6 //数字类型;间隔分钟数
}
}
示例代码
var rong = api.require('rcIM');
// 之前调用 init 和 connect 的代码省略
rong.getNotificationQuietHours(function(ret, err) {
api.toast({ msg: JSON.stringify(ret.result) });
})
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
推送消息的监听
pushListener(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 描述:操作结果
- 内部字段:
{
content: '' // 字符串类型;推送内容
data : // 字符串类型;推送数据
pushId : // 字符串类型;推送id
pushTitle : // 字符串类型;推送标题
senderId : // 字符串类型;推送senderId
senderName : // 字符串类型;推送senderName
targetId : // 字符串类型;推送targetId
targetUserName : // 字符串类型;推送
}
可用性
Android 系统
可提供的 1.0.0 及更高版本
addNeedAvatarListener
添加需要设置头像的时刻的监听
注意:
可在本接口的回调里调用setUserAvatar接口设置用户头像。
addNeedAvatarListener(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 描述:用户信息
- 内部字段:
{
userId: //字符串类型;需要设置头像的用户的id
}
示例代码
var rong = api.require('rcIM');
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.0 及更高版本
setUserAvatar
设置用户头像,此方法在 connect 成功回调之后执行
注意:
由于iOS端SDK功能现在,带UI的接口打开的页面不支持自动显示头像,需要吊样本接口设置用户头像。可在 addNeedAvatarListener 接口回调内调用本接口设置用户头像。
setUserAvatar(params)
params
userId:
- 类型:字符串
- 描述:用户id(connect成功回调返回来的id)
nickName:
- 类型:字符串
- 描述:用户昵称
avatarUrl:
- 类型:字符串
- 描述:头像URI
示例代码
var rong = api.require('rcIM');
var params = {
userId : userId,
nickName : '白兰地',
avatarUrl : 'http://7xq864.com1.z0.glb.clouddn.com/apicloud/9ddf7d56095abd26f2c7ef72bb142563.png'
};
rong.setUserAvatar(params);
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
refreshUserInfoCache
刷新用户缓存数据。
注意: 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)
params
userId:
- 类型:字符串
- 描述:用户id(addNeedAvatarListener成功回调返回来的id)
nickName:
- 类型:字符串
- 描述:用户昵称
avatarUrl:
- 类型:字符串
- 描述:头像URI
示例代码
var rong = api.require('rcIM');
var params = {
userId : userId,
nickName : '白兰地',
avatarUrl : 'http://7xq864.com1.z0.glb.clouddn.com/apicloud/9ddf7d56095abd26f2c7ef72bb142563.png'
};
rong.refreshUserInfoCache(params);
可用性
Android 系统
可提供的 1.0.0 及更高版本
close
关闭会话页面
close()
示例代码
var rcIM = api.require('rcIM');
rcIM.close();
可用性
android 系统
可提供的 1.0.0 及更高版本
addAvatarListener
添加点击聊天页面内头像的监听
addAvatarListener(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 描述:点击头像的返回参数
- 内部字段:
{
userId: //字符串类型;点击的头像的用户的id
}
示例代码
var rong = api.require('rcIM');
rong.addAvatarListener(function(ret) {
api.alert({msg:'点击的用户是'+.JSON.stringify(ret)});
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
configChatSubTitle
配置聊天页面的副标题;会在会话页面标题下方显示
注意:必须在调用openConversation接口 或 openConversationList接口之前调用本接口才能有效。
configChatSubTitle(params)
params
titleConfig:
- 类型:JSON类型的数组
- 描述:(必选项) 根据会话id配置会话页面的副标题
- 内部字段
[
{
targetId:"" //字符串类型; 会话id
subTitle:"" //字符串类型; 副标题
},
....
]
subTitleSize
- 类型:数字类型
- 描述:可选, 副标题字体大小
- 默认值:14
subTitleColor
- 类型:字符串类型
- 描述:可选,副标题字体颜色
- 默认值:#000000
bgColor:
- 类型:字符串类型
- 描述:可选,副标题背景颜色
- 默认值:#EAEAEA
bgHeight:
- 类型:数字类型
- 描述:可选,副标题背景的高度
- 默认值:30
示例代码
var rong = api.require('rcIM');
rong.configChatSubTitle({
title:"这是副标题"
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
configChatButtons
配置通过 openConversation 或 openConversationList接口打开的聊天页面的右上角按钮和输入框扩展面板按钮
注意:必须在调用openConversation 或 openConversationList接口之前调用本接口才能有效。本接口非全局接口,只对当前页面有效。
configChatButtons(params,callback())
params
pluginItems:
- 类型:数组
- 描述:(可选项) 聊天界面输入框扩展面板自定义显示各默认功能按钮
- 默认值:[‘file’,’image’,’location’,’emoji’,’redPacket’,’camera’, ‘sight’]
- 取值范围:
- emoji:动态表情(iOS 端通过自定义附加模块包控制是否显示)
- file:文件(仅支持 android 平台)
- camera:文件(仅支持 iOS 平台)
- image:相册/图片
- location:位置(集成的高德地图)
- redPacket:红包(注:android由于SDK升级,从1.0.6版本开始,如果设置redPacket选项将会有红包和转账功能,在群组里只显示红包功能,单聊里显示红包和转账功能,iOS 端配合自定义附加模块包控制是否显示)
- sight:短视频(iOS 端通过自定义附加模块包控制是否显示)
- audio:语音通话(注:android上只要添加audio和video中的一个,两个都会显示)
- video:视频通话
insertPluginItems:
- 类型:数组
- 描述:(可选项)聊天扩展功能面板添加自定义按钮信息组成的数组(android不支持)
- 默认:不传则不添加显示自定义的按钮
- 内部字段:
[{
title: '', //字符串类型;按钮标题
icon: '', //字符串类型;按钮图标
tag: //数字类型;按钮标签值,以2开头的四位数(2XXX),如2001
}]
rightIcon:
- 类型:字符串
- 描述:(可选项)聊天页面右上角按钮图标,要求本地路径(fs://、widget)
- 默认:不传则不显示右上角按钮
- 注意:若rightIcons有值,则忽略本参数。由于平台机制不同,在android端在本按钮点击事件里打开新页面时必须先关闭当前聊天页面,否则新页面无法正常显示
rightIcons:
- 类型:数组
- 描述:(可选项)聊天页面右上角按钮图标路径(要求本地路径fs://、widget://)组成的数组
- 默认:不传则以rightIcon为准
- 注意:若本参数有值,则忽略rightIcon参数。由于平台机制不同,在android端在本按钮点击事件里打开新页面时必须先关闭当前聊天页面,否则新页面无法正常显示
dndIcon:
- 类型:布尔
- 描述:(可选项)聊天页面标题后面是否显示消息免打扰图标(此参数用来控制在调用setConversationNotificationStatus接口后是否在会话页面的标题栏后面显示消息免打扰图标)
- 默认:false
callback()
ret:
- 类型:JSON 对象
- 描述:按钮点击回调参数
- 内部字段:
{
eventType: 'right' //字符串类型;交互事件类型
//right:右上角按钮点击事件
//plugin:点击聊天输入框扩展面板按钮事件
tag:2001 //数字类型;点击按钮的 tag 值,当eventType 为 plugin 时android不支持;当eventType 为 right 时表示点击的右上角按钮的索引(从右往左依次从0递增)
}
示例代码
var rong = api.require('rcIM');
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.0 及更高版本
configChat
显示对方输入状态、撤销刚(120秒)发送的消息功能配置
注意:显示对方输入状态功能仅对单聊有效
configChat(params)
params
messageRecall:
- 类型:布尔
- 描述:(可选项) 是否开启撤销刚发送消息的功能(android不支持;sdk默认会打开此功能)
- 默认值:false
typingStatus:
- 类型:布尔
- 描述:(可选项) 是否显示对方输入状态
- 默认值:false
示例代码
var UIRongCloud = api.require('rcIM');
UIRongCloud.configChat({
messageRecall: true,
typingStatus: true
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
configGroupChat
配置群聊相关功能。
注意:本接口属于非全局配置,仅对当前页面有效。需在每次openConversation接口打开群聊页面之前调用。
configGroupChat(params)
params
messageMentioned:
- 类型:布尔
- 描述:(可选项) 是否开启@功能
- 默认值:false
members:
- 类型:数组
- 描述:群组成员id列表,若不传则@功能和群组红包功能均会失效(android不支持)
membersInfo:
- 类型: JSON数组
- 描述:群组成员信息列表(ios不支持)
内部字段
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('rcIM');
UIRongCloud.configGroupChat({
messageMentioned: true,
members:users
});
可用性
iOS 系统、android 系统
可提供的 1.0.0 及更高版本
openConversationList
会话列表页
openConversationList({params},callback())
params
title:
- 类型:字符串
- 描述:(可选项)会话列表页面标题
isEnteredToCollectionWindow:
- 类型:布尔
- 描述:(可选项)当前会话列表是否为从聚合Cell点击进入的子会话列表,您在点击会话列表中的聚合Cell跳转到到子会话列表时,需要将此属性设置为true。
- 默认:false
showConnectingStatus:
- 类型:布尔
- 描述:(可选项)当连接状态变化SDK自动重连时,是否在NavigationBar中显示连接中的提示。
- 默认:true
conversationTypes:
- 类型:数组
- 描述:(可选项)设置需要显示哪些类型的会话参见 会话类型
- 默认:[‘PRIVATE’,’GROUP’,’DISCUSSION’,’CHATROOM’,’APPSERVICE’,’SYSTEM’]
collectionTypes:
- 类型:数组
- 描述:(可选项)设置在列表中需要聚合为一条显示的会话类型数组参见会话类型
- 默认:[‘GROUP’,’DISCUSSION’]
avatarStyle:
- 类型:字符串
- 描述:(可选项)头像形状,(android不支持)
- 默认:rectangle
- 取值范围:
- rectangle:方形
- cycle:圆形
avatarSize:
- 类型:JSON对象
- 描述:(可选项)头像大小,(android不支持)
- 内部字段:
{
with:46, //数字类型;头像宽;默认:46
height:46 //数字类型;头像高;默认:46
}
cellBgColor:
- 类型:字符串
- 描述:(可选项) Cell的背景颜色,(android不支持)
topCellBgColor:
- 类型:字符串
- 描述:(可选项) 置顶会话的Cell背景颜色,(android不支持)
navigationBar:
- 类型:JSON 对象
- 描述:导航条样式配置
- 内部字段:
{
titleColor: '#fff', //字符串类型;标题文字颜色;默认:#fff
bgColor: '#d6d6d6', //字符串类型;导航条背景色;默认:#d1d1d1
backColor: '#fff', //字符串类型;导航条返回按钮色;默认:#fff(android不支持)
backImage:'' //字符串类型;导航条返回按钮图片的路径,支持fs://,widget://;默认融云提供的按钮(ios不支持)
}
示例代码
var rong = api.require('rcIM');
rong.openConversationList({
avatarSize:{
width:46,
height:46
},
avatarStyle: 'cycle',
isEnteredToCollectionWindow:false,
showConnectingStatus:true,
title:'会话列表'
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
openConversation
会话页面
openConversation(params,callback())
params
conversationType:
- 类型:字符串
- 描述:消息的会话类型,参见 会话类型
targetId:
- 类型:字符串
- 描述:目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id 或聊天室 Id 等
title:
- 类型:字符串
- 描述:页面标题
navigationBar:
- 类型:JSON 对象
- 描述:导航条样式配置
- 内部字段:
{
titleColor: '#fff', //字符串类型;标题文字颜色;默认:#fff
bgColor: '#0099ff', //字符串类型;导航条背景色;默认:#0099ff
backColor: '#fff', //字符串类型;导航条返回按钮色;默认:#fff(android不支持)
backImage:'' //字符串类型;导航条返回按钮图片的路径,支持fs://,widget://;默认融云提供的按钮(ios不支持)
}
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
eventType: 'back' //字符串类型;交互事件类型
//back:从聊天界面返回
targetId:1 //字符串类型;目标 Id
}
示例代码
var rong = api.require('rcIM');
rong.openConversation({
conversationType: 'PRIVATE',
targetId: '9527',
title: '9527'
},function(ret){
api.alert({msg:JSON.stringify(ret)});
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
startSingleCall
发起单人通话
startSingleCall(params)
params
targetId:
- 类型:字符串
- 描述:会话 id
type:
- 类型:字符串
- 描述:会话媒体类型
- 默认值:audio
- 取值范围:audio、video
示例代码
var rong = api.require('rcIM');
var params = {
targetId : userId,
type : 'audio'
};
rong.startSingleCall(params);
可用性
iOS 系统、Android 系统
可提供的 1.0.0 及更高版本
startMultiCall
发起多人通话
startMultiCall(params)
params
conversationType:
- 类型:字符串
- 描述:会话类型
- 默认值:GROUP
targetId:
- 类型:字符串
- 描述:会话 id
type:
- 类型:字符串
- 描述:会话媒体类型
- 默认值:audio
- 取值范围:audio、video
userids:
- 类型:数组类型
- 描述:参与者 id 列表
- 默认值:无
示例代码
var rong = api.require('rcIM');
var params = {
targetId : userId,
type : 'audio',
userids:['1234', 'lan']
};
rong.startMultiCall(params);
可用性
iOS 系统、Android 系统
可提供的 1.0.0 及更高版本
addNeedGroupInfoListener
添加需要设置头像的时刻的监听
注意:
可在本接口的回调里调用setUserAvatar接口设置用户头像。
addNeedGroupInfoListener(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 描述:用户信息
- 内部字段:
{
userId: //字符串类型;需要设置头像的用户的id
}
示例代码
var rong = api.require('rcIM');
rong.addNeedGroupInfoListener(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.0 及更高版本
setWalletStyles
设置钱包页面的样式,请在打开红包之前设置
setWalletStyles({params})
params
themeFontSize:
- 类型:数字
- 描述:(可选项)标准字体大小
- 默认:14
NavTitfontSize:
- 类型:数字
- 描述:(可选项)标题栏字体大小
- 默认:16
pageChargeFont:
- 类型:数字
- 描述:(可选项)首页金额大小
- 默认:22
pageTitleStr:
- 类型:字符串
- 描述:(可选项)钱包标题
- 默认:我的钱包
themePageColor:
- 类型:字符串
- 描述:(可选项)钱包页顶部主题色
- 默认:#157EFB
pageBtnColor:
- 类型:字符串
- 描述:(可选项)钱包页,充值、提现按钮颜色
- 默认:#0665D6
themeBtnColor:
- 类型:字符串
- 描述:(可选项)按钮主题色
- 默认:#157EFB
themeNavColor:
- 类型:字符串
- 描述:(可选项)导航条主题色
- 默认:#157EFB
NavTitColor:
- 类型:字符串
- 描述:(可选项)标题颜色
- 默认:#fff
示例代码
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 及更高版本
walletSDKWithPartnerId
初始化函数
walletSDKWithPartnerId({params})
params
partnerId:
- 类型:字符串
- 描述:渠道ID(融云/魔方金融分配给贵公司的渠道名称)
示例代码
var rong = api.require('UIRongCloud');
rong.walletSDKWithPartnerId({
partnerId:"*******"
});
可用性
iOS 系统
可提供的 1.0.0 及更高版本
walletSDKWithThirdToken
初始化三方令牌
walletSDKWithThirdToken({params})
params
token:
- 类型:字符串
- 描述:三方令牌
示例代码
var rong = api.require('UIRongCloud');
rong.walletSDKWithThirdToken({
token:"*******"
});
可用性
iOS 系统
可提供的 1.0.0 及更高版本
openMyWallet
我的钱包页面
openMyWallet()
示例代码
var rong = api.require('UIRongCloud');
rong.openMyWallet();
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
会话类型
区分不同的会话形式,字符串类型
取值范围
- PRIVATE (单聊)
- DISCUSSION (讨论组)
- GROUP (群组)
- CHATROOM(聊天室)
- CUSTOMER_SERVICE (客服)
- SYSTEM (系统)
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
会话通知提醒状态
会话通知提醒的状态,开启或者关闭,字符串类型
取值范围
- DO_NOT_DISTURB (免打扰)
- NOTIFY (提醒)
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
讨论组邀请状态
讨论组邀请状态,开放或者关闭,字符串类型
取值范围
- OPENED (开放邀请)
- CLOSED (关闭邀请)
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
连接状态
连接状态,字符串类型
取值范围
- CONNECTED (连接成功)
- CONNECTING (连接中)
- DISCONNECTED (断开连接)
- KICKED (用户账户在其他设备登录,本机会被踢掉线)
- NETWORK_UNAVAILABLE (网络不可用)
- SERVER_INVALID (服务器异常或无法连接)
- TOKEN_INCORRECT (Token 不正确)
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
发送出的消息状态
连接状态,字符串类型
取值范围
- FAILED (发送失败)
- SENDING (发送中)
- SENT (已发送)
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
接收到的消息状态
接收到的消息状态,字符串类型
取值范围
- UNREAD (未读)
- READ (已读)
- LISTENED (已收听)
- DOWNLOADED ( 已下载)
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本