rcIM

来自于:开发者立即使用

功能接口

初始化和连接

消息的发送

监听收到的消息

消息回执(群组、单聊)

离线消息

获取最后、历史消息,删除、清空、撤销消息

获取未读消息

设置消息的状态

文字消息草稿

会话

搜索消息和会话

讨论组

聊天室

黑名单

音视频通话

本地通知的设置

会话通知状态

消息通知免打扰

带UI的接口

打开带UI的会话界面及列表

红包页面

概述

融云 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 平台上应用的概览里可以查看。

  1. 为 App 开启远程推送服务
  2. 生成并上传 P12 证书
  3. 融云开发者平台上传 p12 证书
  4. 生成 provisioning profile 文件
  5. 将 provisioning profile 文件上传 APICloud 平台
  6. 在 APICloud 平台云编译出 ipa 安装包并安装(正式版发布到苹果商店,通过苹果商店下载安装)
  7. 用户允许推送

以上步骤都已经实现后,还需要使用您 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 包并解压得到如下文件:

IMLib目录截图

将 CallLib、IMLib、RTCLib 文件夹中所有的 .framework文件、.a文件、.plist文件提取出来,放在一个 target 文件夹下备用。下载 rcIMLibAppendix 模块 zip 包并解压,把 zip 包内 target 文件夹替换为上一步创建的 target文件夹。然后重新压缩为 zip 包文件上传自定义模块,云编译时勾选该模块。 注意重新压缩时注意不要多一层目录。target 文件夹目录如下图所示:

IMLib的target目录截图

IMKit

在融云官网 下载页面 点击 IMKit SDK 下载 按钮,下载 zip 包并解压得到如下文件:

IMKit目录截图

其中有三个扩展功能 SDK 包:

  • RedPacket:红包功能库,若不需要红包功能删除即可(红包接口将不可用,且configChatButtons接口配置了redPacket也不会显示发送红包按钮)
  • RongSticker:发送动态表情功能库,若不需要动态功能删除即可(configChatButtons接口配置了emoji也不会显示动态表情按钮)
  • Sight:发送短视频功能库,若不需要发送短视频功能删除即可(configChatButtons接口配置了sight也不会显示发送短视频按钮)

将 IMKit、IMLib、RCMCenter、Rong_Cloud_iOS_CallKit_SDK_v2_9_19_Dev 文件夹,以及扩展功能 SDK 包(RedPacket、RongSticker、Sight若不需要则不加)中的 .framework文件、.a文件、.plist.bundle.cer以及图片资源文件提取出来,放在一个 target 文件夹下备用。下载 rcIMKitAppendix 模块 zip 包并解压,保留其中的 libACRCKitBridge.a 文件备用。把 zip 包内 target 文件夹替换为上一步创建的 target文件夹。然后把 libACRCKitBridge.a 文件也放到 target 目录下。最后重新压缩为 zip 包文件上传自定义模块,云编译时勾选该模块。 注意重新压缩时注意不要多一层目录。示例 target 文件夹目录如下图所示:

IMKit目录截图

注意:

  • 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 文件夹目录如下图所示:

IMKit目录截图

自定义附加模块制作(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:

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 及更高版本