startSingleCall
openConversation
closeConversation
addNeedUserInfoListener
setCurrentUserInfo
setUserInfo
refreshUserInfoCache
clearUserInfoCache
getUserInfoCache
addPortraitClickListener addRightMenueListener didChatViewClosed addCoutdownAlertListener addQuestionCuesListener addBoardClickListener
sendMessage didCardMessageCellClick updateMessageExpansion updateMessageExtra addMessageCellListener
UIRongChat 是针对对UI和功能需求不那么高的开发者推出的插件。如果你的项目对UI和功能要求很深,请在充分调研本插件是否满足需求后再决定使用。本插件提供的UI接口不满足需求,建议使用 rongCloud2 插件,让前端去实现UI部分。请在项目启动前做好调研评估后再决定是否使用本插件。
融云 Rong Cloud 是国内首家专业的即时通讯云服务提供商,专注为互联网、移动互联网开发者提供即时通讯基础能力和云端服务。通过融云平台,开发者不必搭建服务端硬件环境,就可以将即时通讯、实时网络能力快速集成至应用中。
UIRongChat 封装了融云即时通讯能力库 IMLib SDK 的部分 API,同时也封装了 IMKit 的部分接口。本插件自带 UI,方便开发者快速将融云即时通讯功能集成到自己 App 内。
使用 UIRongChat 插件之前,请先 注册 融云的开发者帐号并申请创建 App,创建 App 后,可以在 开发者后台 获取 App Key 和 App Secret 用于开发。
开发前请先认真阅读相关的 融云开发文档和视频。
本文主要介绍了使用融云 IM 时,何时会收到远程推送、如何使用远程推送、如何获取远程推送的内容。
在使用远程推送之前,您需要先了解融云 SDK 的运行状态。
融云 SDK 根据 iOS App 运行的特性,主要有以下三种运行状态:
1、 前台状态 如字面意思,App 前台可见时插件处于前台状态。此时 App 使用融云的长连接通道来收发消息。
2、 后台活动状态 当 App 进入后台 2 分钟之内,插件于后台活跃状态。此时 App 使用融云的长连接通道接收消息。
3、 后台暂停状态当 App 进入后台 2 分钟之后或被杀进程或被冻结,插件处于后台暂停状态。此时融云的长连接通道会断开,融云 Server 会通过 APNs 将消息以远程推送的形式下发到客户端。 此状态下如果有人给该用户发送消息,融云的服务器会根据 deviceToken 和推送证书将消息发送到苹果推送服务器,苹果服务器会将该消息推送到客户端。
远程推送消息是通过苹果的 APNs 通道实现从融云到用户终端的。其大体流程是:融云服务器--->苹果服务器--->用户手机终端--->手机弹出提示框--->用户点击提示框--->目标App收到推送消息。注意:如果用户不算通过点击推送提示框打开App的,则app收不到任何有关此推送的消息。
本地推送是指 App 还在运行时(前台状态和刚进入后台2分钟之内的状态),app通过代码让系统弹出推送的提示框,虽然对用户来说效果跟远程推送一样,但其实现原理不同。
此过程的 1-4 步骤请参考融云官方的 推送开发指南----如何使用远程推送。其中涉及到的 AppID即为 Bundle Identifie,与 YonBuilder移动开发 平台上的包名是同一个东西,在 YonBuilder移动开发 平台上应用的概览里可以查看。
以上步骤都已经实现后,还需要使用您 App 的用户允许通知,才能收到远程推送。您可以在设备的设置应用中,查看当前App是否允许通知。
远程推送的格式
{
"aps" :
{
"alert" : "You got your emails.",
"badge" : 1,
"sound" : "default"
},
"rc":{"cType":"PR","fId":"xxx","oName":"xxx","tId":"xxxx","id":"46s54fad","rc-dlt-identifier":"dafasdfkweo"},
"appData":"xxxx"
}
融云消息的远程推送内容详解:
rc 数据说明:
名称 | 类型 | 说明 |
---|---|---|
alert | String | 远程推送显示的内容。自带的消息会有默认显示,如果您使用的是自定义消息,需要在发送时设置。对应于 iOS 发送消息接口中的 pushContent。 |
cType | String | 会话类型。PR 指单聊、 DS 指讨论组、 GRP 指群组、 CS 指客服、SYS 指系统会话、 MC 指应用内公众服务、 MP 指跨应用公众服务。 |
fId | String | 消息发送者的用户 ID。 |
oName | String | 消息类型,参考融云消息类型表.消息标志;可自定义消息类型。 |
tId | String | Target ID。 |
id | String | 当前推送的消息唯一标识,对应消息路由功能中的 msgUID。 |
rc-dlt-identifier | String | 当发送的是一条撤回消息推送时,为需要撤回消息的 ID,对应消息路由功能中的 msgUID。 |
appData | String | 远程推送的附加信息,对应于 iOS 发送消息接口中的 pushData。 |
App 已经被系统冻结杀死(后台暂停状态)时,收到远程推送屏幕顶部(或锁屏页)会弹出提示框。用户点击通知提示框时,则YonBuilder移动开发会将本次推送的内容通过事件监听回调的方式交给开发者。具体使用如下:
api.addEventListener({
name: 'noticeclicked'
}, function(ret) {
if (ret && ret.value) {
var result = ret.value;
}
})
注意:如果此时用户直接点击 App 图标启动 app,则开发者无法获取推送的任何信息。
如果 App 未被系统冻结(前台和刚进后台 2 分钟之内的状态),此时即时通讯相关消息(比如聊天消息)走融云长链接通道,插件自动处理(弹出本地通知)。非即时通讯相关消息(比如从融云后台发一条广告给App所有用户),则在 pushListener 接口中可以捕获该消息,详情参考 pushListener 接口说明。
融云默认使用自己平台的推送服务,由于该推送服务属于应用级别的,所以可能受到系统平台的限制,建议您在使用时,在设置里打开自启动权限和通知权限,或者勾选“信任此应用”等,以提高推送到达率
集成第三方推送(使用thirdpartPush自定义插件)
thirdpartPush 插件集成了小米、魅族、vivo、oppo平台的推送,在使用该插件之前需要到相应的平台创建应用并获取相应的 appKey & appSecret等信息,并登录融云开发者后台在应用标识中配置相应的信息,并将该插件以自定义插件形式编译打包 注意:需要在调用init方法是配置或开启相应的第三方推送
<!-- vivo 推送配置项 -->
<meta-data name="com.vivo.push.api_key" value="您的 vivo 推送平台生成 AppKey"/>
<meta-data name="com.vivo.push.app_id" value="您的 vivo 推送平台生成 AppID"/>
<meta-data name="com.huawei.hms.client.appid" value="华为推送appID"/>
使用该插件需要在config.xml中进行如下配置(可参考:/docs/Technical-Topics/Introduction-Config-Config_Xml#35-2):
<intent-filter>
<action name="android.intent.action.VIEW"/>
<category name="android.intent.category.DEFAULT"/>
<data scheme="rong" host="你的包名" pathPrefix="/conversation/"/>
</intent-filter>
<intent-filter>
<action name="android.intent.action.VIEW" />
<category name="android.intent.category.DEFAULT" />
<data host="你的包名" path="/conversationlist" scheme="rong" />
</intent-filter>
<intent-filter>
<action name="android.intent.action.VIEW" />
<category name="android.intent.category.DEFAULT" />
<data host="你的包名" pathPrefix="/push_message" scheme="rong" />
</intent-filter>
其中 data中的host为集成应用的包名
使用本插件之前需要先去科大讯飞开放平台注册开发者账号,然后创建app,获取 appID ,接着给创建的 app 添加语音听写服务。最后下载SDK包。
并将 appID 配置到 config.xml
文件。示例如下:
<feature name="UIRongChat">
<param name="iflyAppID" value="5dce6d60" />
</feature>
【ios平台使用插件的配置】
1,配置 plist 文件
在 iOS 9 下直接进行 HTTP 请求时会收到错误提示。不能直接使用 HTTP 进行请求,需要在 Info.plist 新增一段用于控制 ATS 的配置:
<key>NSAppTransportSecurity</key> <dict>
<key>NSAllowsArbitraryLoads</key> <true/>
</dict>
2,应用打包时的配置
应用打包时,需要申请访问的权限:麦克风、定位(使用期间)、定位(始终)、通讯录。注意:iOS最低适配版本为 iOS8, 需要在应用打包界面,右上角的高级设置里,选择支持iOS版本为8.0以上。
3,动态库配置 ----- 附加插件制作
由于科大讯飞的 SDK 是动态生成的。所以需要开发者将动态生成的的 SDK 打包成一个附加自定义插件上传 YonBuilder移动开发 平台。制作方法如下:
下载 UIRongCloudIfly 插件 zip 包并解压,把从科大讯飞下载得到的 iflyMSC.framework
放到 zip 包内 target 目录下,删除原有的libACrcIflyRecognize.a。然后重新压缩为 zip 包文件上传自定义插件,应用打包时勾选该插件。
初始化融云 SDK,调用 connect 连接前务必保证调用此方法
调用前请在 config.xml 中设置内容如下:
<feature name="UIRongChat">
<param name="appKey" value="此处填写 App Key 值" />
<!-- 通知通道名称,适配 Android 8.0+ 通知机制,该字段仅对Android有效 -->
<param name="notificationChannelName" value="" />
<!-- 通知通道ID,适配 Android 8.0+ 通知机制,该字段仅对Android有效-->
<param name="notificationChannelId" value=""/>
</feature>
其中 value 的值请替换为您在融云开发者平台上申请的 App Key 值
init(params, callback(ret, err))
miPush:
{
appId: //字符串类型;小米后台申请的appid
appKey: //字符串类型;小米后台申请的appKey
}
huaweiPush:
meizuPush:
{
appId:'', // 字符串;魅族推送的AppID
appKey:'' // 字符串;魅族推送 AppKey
}
oppoPush:
{
appKey:'', // 字符串;oppo推送的key
appSecret:'' // 字符串;oppo推送 secret
}
vivoPush:
ret:
{
status: //布尔类型;是否成功;true|false
}
err:
{
code: -10002 //数字类型;错误码,输入参数错误
}
var rong = api.require('UIRongChat');
rong.init(function(ret, err) {
if (!ret.status)
api.toast({ msg: err.code });
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
连接融云 IM 服务器,进行后续各种方法操作前务必要先调用此方法
connect({params}, callback(ret, err))
token:
timeLimit:
ret:
{
status: , //布尔类型;是否链接成功
userId: //字符串类型;用户ID
}
err:
{
code: 31004 // 错误码
}
错误说明 更多状态码:
错误码 | 说明 |
---|---|
31003 | 服务器不可用 |
31004 | 错误的令牌(Token),Token 解析失败,请重新向身份认证服务器获取 Token |
31002 | 可能是错误的 App Key,或者 App Key 被服务器积极拒绝 |
33002 | 服务端数据库错误 |
31000 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10002 | 输入参数错误 |
-1000 | (此错误只发生在 iOS)当已经 connect 成功后再次 connect 时会返回此错误 |
var rong = api.require('UIRongChat');
rong.connect({
token: 'ThptTWyiPPPvZHvuSiuri82yq+hfEluLjZ78E1qo4hEVSFQNpqdoPu406urMWKN4Z3/olWR+v9JVLAwfOQoLrA=='},function(ret, err) {
if (ret.status) api.toast({ msg: ret.userId });
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
断开连接
disconnect({params})
isReceivePush:
var rong = api.require('UIRongChat');
rong.disconnect({
isReceivePush: true
}); // 断开,且不再接收 Push
iOS系统,Android系统
可提供的 1.0.0 及更高版本
注销登录(不再接收 Push 消息)
logout()
var rong = api.require('UIRongChat');
rong.logout(); // 断开,且不再接收 Push
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取当前连接用户的信息
getCurrentUserId(callback(ret))
ret:
{
currentUserId: 'apple' //字符串类型;当前连接用户
}
var rong = api.require('UIRongChat');
rong.getCurrentUserId(function(ret) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取连接状态
getConnectionStatus(callback(ret))
ret:
{
connectionStatus: 'CONNECTED' //字符串类型;连接状态
}
var rong = api.require('UIRongChat');
rong.getConnectionStatus(function(ret) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
设置连接状态变化的监听器,请在调用 init 方法之后,调用 connect 方法之前设置
setConnectionStatusListener(callback(ret, err))
ret:
{
connectionStatus: 'CONNECTED' //字符串类型;连接状态
}
var rong = api.require('UIRongChat');
rong.setConnectionStatusListener(function(ret) {
api.toast({ msg: ret.connectionStatus });
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
推送消息的监听
pushListener(callback(ret))
ret:
{
content: '', // 字符串类型;推送内容
data:'', // 字符串类型;推送数据
pushId:'', // 字符串类型;推送id
pushTitle:'', // 字符串类型;推送标题
senderId:'', // 字符串类型;推送senderId
senderName:'', // 字符串类型;推送senderName
targetId:'', // 字符串类型;推送targetId
targetUserName:'', // 字符串类型;推送
result:{} // JSON对象;iOS端收到的推送消息,详情参考概述部分文档。
}
iOS系统,Android系统
可提供的 1.0.0 及更高版本
设置本地推送提示
enableLocalNotification()
var rong = api.require('UIRongChat');
rong.enableLocalNotification()
iOS系统,Android系统
可提供的 1.0.0 及更高版本
设置本地推送消息不提示
disableLocalNotification()
var rong = api.require('UIRongChat');
rong.disableLocalNotification()
iOS系统,Android系统
可提供的 1.0.0 及更高版本
设置消息通知免打扰时间,此方法会屏蔽该会话在该时间段的远程推送;
setNotificationQuietHours({params}, callback(ret))
startTime:
spanMinutes:
ret:
{
status: //布尔类型;状态码
code: //数字类型;status为false时有值,错误码
}
var rong = api.require('UIRongChat');
rong.setNotificationQuietHours({
startTime: '22:00:00',
spanMinutes: 6
}, function(ret) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
移除消息通知免打扰时间
removeNotificationQuietHours(callback(ret))
ret:
{
status: //布尔类型;是否成功
code: //数字类型;status为false时有值,错误码
}
var rong = api.require('UIRongChat');
rong.removeNotificationQuietHours(function(ret) {
api.toast({ msg: ret.status });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取消息通知免打扰时间
getNotificationQuietHours(callback(ret))
ret:
{
status:, //布尔类型;状态码
startTime: "22:00:00", //字符串类型;起始时间
spanMinutes: 6, //数字类型;间隔分钟数
code: //数字类型;status为false时有值,错误码
}
var rong = api.require('UIRongChat');
rong.getNotificationQuietHours(function(ret) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
分页获取会话列表
会话列表按照时间从前往后排列,如果有置顶会话,则置顶会话在前
getConversationList({params},callback(ret))
conversationTypes:
count:
startTime:
ret:
{
conversationList: [
{
conversationTitle: 'Ironman', //字符串类型;会话标题
conversationType: 'PRIVATE', //字符串类型;参见 会话类型 枚举
draft: '', //字符串类型;文字消息草稿的内容
targetId: 'group001', //字符串类型;消息目标 Id
latestMessage: { //JSON对象;最后一条消息的内容
text: 'Hello world!', //字符串类型;
extra: '' //字符串类型;
},
readReceiptInfo:{ //JSON对象;注:如果此字段无值,则返回空
hasRespond:true, //布尔类型;是否已经发送回执
isReceiptRequestMessage:true, //布尔类型;是否需要回执消息
userIdList:{}, //JSON对象;发送回执的用户ID列表 (android不支持)
userIds:[] //JSON对象;;发送回执的用户ID和时间戳列表 (ios不支持)
},
sentStatus: 'SENT', //字符串类型;参见发送出的消息状态
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('UIRongChat');
rong.getConversationList(function(ret) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取某一会话信息
getConversation({params}, callback(ret))
conversationType:
targetId:
ret:
{
conversation: {
conversationTitle: 'Ironman', //字符串类型;会话标题
conversationType: 'PRIVATE', //字符串类型;参见 会话类型 枚举
draft: '', //字符串类型;文字消息草稿的内容
targetId: 'group001', //字符串类型;消息目标 Id
latestMessage: { //JSON对象;最后一条消息的内容
text: 'Hello world!', //字符串类型;
extra: '' //字符串类型;
},
readReceiptInfo:{ //JSON对象;注:如果此字段无值,则返回空
hasRespond:true, //布尔类型;是否已经发送回执
isReceiptRequestMessage:true, //布尔类型;是否需要回执消息
userIdList:{}, //JSON对象;发送回执的用户ID列表 (android不支持)
userIds:[] //JSON对象;;发送回执的用户ID和时间戳列表 (ios不支持)
},
sentStatus: 'SENT', //字符串类型;参见发送出的消息状态
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('UIRongChat');
rong.getConversation({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取置顶会话列表
getTopConversationList({params},callback(ret))
conversationTypes:
ret:
{
conversationList:[ {
conversationTitle: 'Ironman', //字符串类型;会话标题
conversationType: 'PRIVATE', //字符串类型;参见 会话类型 枚举
draft: '', //字符串类型;文字消息草稿的内容
targetId: 'group001', //字符串类型;消息目标 Id
latestMessage: { //JSON对象;最后一条消息的内容
text: 'Hello world!', //字符串类型;
extra: '' //字符串类型;
},
readReceiptInfo:{ //JSON对象;注:如果此字段无值,则返回空
hasRespond:true, //布尔类型;是否已经发送回执
isReceiptRequestMessage:true, //布尔类型;是否需要回执消息
userIdList:{}, //JSON对象;发送回执的用户ID列表 (android不支持)
userIds:[] //JSON对象;;发送回执的用户ID和时间戳列表 (ios不支持)
},
sentStatus: 'SENT', //字符串类型;参见发送出的消息状态
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('UIRongChat');
rong.getTopConversationList(function(ret) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取屏蔽消息的会话列表
getBlockedConversationList(params, callback(ret))
conversationTypes:
ret:
{
conversationList:[ {
conversationTitle: 'Ironman', //字符串类型;会话标题
conversationType: 'PRIVATE', //字符串类型;参见 会话类型 枚举
draft: '', //字符串类型;文字消息草稿的内容
targetId: 'group001', //字符串类型;消息目标 Id
latestMessage: { //JSON对象;最后一条消息的内容
text: 'Hello world!', //字符串类型;
extra: '' //字符串类型;
},
readReceiptInfo:{ //JSON对象;注:如果此字段无值,则返回空
hasRespond:true, //布尔类型;是否已经发送回执
isReceiptRequestMessage:true, //布尔类型;是否需要回执消息
userIdList:{}, //JSON对象;发送回执的用户ID列表 (android不支持)
userIds:[] //JSON对象;;发送回执的用户ID和时间戳列表 (ios不支持)
},
sentStatus: 'SENT', //字符串类型;参见发送出的消息状态
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('UIRongChat');
rong.getBlockedConversationList(function(ret) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
从会话列表中移除某一会话,但是不删除会话内的消息
如果此会话中有新的消息,该会话将重新在会话列表中显示,并显示最近的历史消息
removeConversation({params}, callback(ret))
conversationType:
targetId:
ret:
{
status: true. //布尔类型;是否移除;true|false
}
var rong = api.require('UIRongChat');
rong.removeConversation({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret) {
api.toast({ msg: ret });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
清空所有会话及会话消息
clearConversations({params}, callback(ret))
conversationTypes:
ret:
{
status: true。 //布尔类型;是否成功;true|false
}
var rong = api.require('UIRongChat');
rong.clearConversations({
conversationTypes: ['PRIVATE', 'GROUP']
}, function(ret) {
api.toast({ msg: ret });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
设置某一会话为置顶或者取消置顶
setConversationToTop({params}, callback(ret))
conversationType:
targetId:
isTop:
ret:
{
status: true //布尔类型;是否成功;true|false
}
var rong = api.require('UIRongChat');
rong.setConversationToTop({
conversationType: 'PRIVATE',
targetId: '9527',
isTop: true
}, function(ret) {
api.toast({ msg: JSON.stringify(ret)});
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取某一会话的通知状态
getConversationNotificationStatus({params}, callback(ret, err))
conversationType:
targetId:
ret:
{
status: true //布尔类型;是否成功;true|false
}
err:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
30003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
var rong = api.require('UIRongChat');
rong.getConversationNotificationStatus({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
if (ret.status)
api.toast({ msg: JSON.stringify(ret)});
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
设置某一会话的通知状态
setConversationNotificationStatus({params}, callback(ret, err))
conversationType:
targetId:
isBlocked:
ret:
{
status: true //布尔类型;是否成功;true|false
}
err:
{
code: 30003
}
状态码说明:
状态码 | 说明 |
---|---|
300003 | 服务器超时 |
-10000 | 未调用 init 方法进行初始化 |
-10001 | 未调用 connect 方法进行连接 |
-10002 | 输入参数错误 |
var rong = api.require('UIRongChat');
rong.setConversationNotificationStatus({
conversationType: 'PRIVATE',
targetId: '9527',
isBlocked: false
}, function(ret, err) {
if (ret.status)
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
监听会话状态变化
ret:
### 示例代码
``` js
var rong = api.require('UIRongChat');
rong. setRCConversationStatusChangeListener(function(ret) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取当前用户离线消息时间
getOfflineMessageDuration(callback(ret))
ret:
{
duration: '' //数字类型;当前用户离线消息时间,单位:天
}
var rong = api.require('UIRongChat');
rong.getOfflineMessageDuration(function(ret) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
设置当前用户离线消息存储时间
setOfflineMessageDuration(params, callback(ret, err))
duration:
ret:
{
status: true //布尔类型;获取到的状态
time: '' //字符串类型;设置成功后的时间(毫秒值)(iOS不支持)
}
err:
{
errCode: '' //数字类型;错误码;详情参见:https://www.rongcloud.cn/docs/status_code.html#android_ios_code
}
var rong = api.require('UIRongChat');
rong.setOfflineMessageDuration({duration:2}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
搜索本地历史消息
searchConversations({params}, callback(ret))
conversationTypes:
objectNames:
keyword:
ret:
{
conversationList:[ {
conversationTitle: 'Ironman', //字符串类型;会话标题
conversationType: 'PRIVATE', //字符串类型;参见 会话类型 枚举
draft: '', //字符串类型;文字消息草稿的内容
targetId: 'group001', //字符串类型;消息目标 Id
latestMessage: { //JSON对象;最后一条消息的内容
text: 'Hello world!', //字符串类型;
extra: '' //字符串类型;
},
readReceiptInfo:{ //JSON对象;注:如果此字段无值,则返回空
hasRespond:true, //布尔类型;是否已经发送回执
isReceiptRequestMessage:true, //布尔类型;是否需要回执消息
userIdList:{}, //JSON对象;发送回执的用户ID列表 (android不支持)
userIds:[] //JSON对象;;发送回执的用户ID和时间戳列表 (ios不支持)
},
sentStatus: 'SENT', //字符串类型;参见发送出的消息状态
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('UIRongChat');
rong.searchConversations({
conversationTypes: ['PRIVATE'],
objectNames: ['RC:TxtMsg'],
keyword:'hello'
}, function(ret) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
根据会话,搜索本地历史消息。
searchMessages({params}, callback(ret))
conversationType:
targetId:
keyword:
count:
beginTime:
ret:
{
messageList: [ { //JSON对象;消息体数据格式
content: { //字符串类型;消息内容
text: 'Hello world!', //字符串类型;内容
extra: '' //字符串类型;附加文本
},
readReceiptInfo:{ //JSON对象;注:如果此字段无值,则返回空
hasRespond:true, //布尔类型;是否已经发送回执
isReceiptRequestMessage: , //布尔类型;是否需要回执消息
userIdList:[], //JSON数组类型;发送回执的用户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('UIRongChat');
rong.searchMessages({
conversationType: 'PRIVATE',
targetId: '1234',
keyword:'hello'
}, function(ret) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取某一会话的最新消息记录
getLatestMessages({params}, callback(ret))
conversationType:
targetId:
count:
ret:
{
latestMessages: [ { //JSON对象;消息体数据格式
content: { //字符串类型;消息内容
text: 'Hello world!', //字符串类型;内容
extra: '' //字符串类型;附加文本
expansionDic:{ //JSON对象;消息扩展,有些消息无此字段
'cardType':'orderCard' //字符串类型;消息类型
'orderNumber':'订单号' //字符串类型;有些消息无此字段
'orderName':'订单名' //字符串类型;有些消息无此字段
'orderAmount':'订单价格' //字符串类型;有些消息无此字段
'orderState':'订单状态' //字符串类型;有些消息无此字段
'bizName':'名片名' //字符串类型;有些消息无此字段
'bizGrade':'用户评分' //字符串类型;有些消息无此字段
'bizTotality':'服务总数' //字符串类型;有些消息无此字段
}
},
readReceiptInfo:{ //JSON对象;注:如果此字段无值,则返回空
hasRespond:true, //布尔类型;是否已经发送回执
isReceiptRequestMessage: , //布尔类型;是否需要回执消息
userIdList:[], //JSON数组类型;发送回执的用户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('UIRongChat');
rong.getLatestMessages({
conversationType: 'PRIVATE',
targetId: '9527',
count: 20
}, function(ret) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取某一会话信息数量
getMessageCount({params}, callback(ret))
conversationType:
targetId:
ret:
{
count: // 数字类型;当前会话消息数
}
var rong = api.require('UIRongChat');
rong.getMessageCount({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret, err) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取所有未读消息数
getTotalUnreadCount(callback(ret))
ret:
{
totalUnreadCount: 12 //数字类型;未读消息数
}
var rong = api.require('UIRongChat');
rong.getTotalUnreadCount(function(ret) {
api.toast({ msg: ret });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取来自某用户(某会话)的未读消息数
getUnreadCount({params}, callback(ret))
conversationType:
targetId:
ret:
{
unreadCount: 12 //数字类型;未读消息数
}
var rong = api.require('UIRongChat');
rong.getUnreadCount({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取某(些)会话类型的未读消息数
getUnreadCountByConversationTypes({params}, callback(ret))
conversationTypes:
ret:
{
unreadCount: 12 //数字类型;未读消息数
}
var rong = api.require('UIRongChat');
rong.getUnreadCountByConversationTypes({
conversationTypes: ['PRIVATE', 'GROUP']
}, function(ret) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
清除某一会话的消息未读状态
clearMessagesUnreadStatus({params}, callback(ret))
conversationType:
targetId:
ret:
{
status: 'success' //布尔类型;是否成功,true|false
}
var rong = api.require('UIRongChat');
rong.clearMessagesUnreadStatus({
conversationType: 'PRIVATE',
targetId: '9527'
}, function(ret) {
api.toast({ msg: JSON.stringify(ret) });
})
iOS系统,Android系统
可提供的 1.0.0 及更高版本
同步会话阅读状态
syncConversationReadStatus(params, callback(ret))
conversationType:
targetId:
time:
ret:
{
status: , //布尔类型;状态
errorCode: , //数字;错误码;status为false时有值
}
var rong = api.require('UIRongChat');
// 之前调用 init 和 connect 的代码省略
rong.syncConversationReadStatus({conversationType:'private',targetId:"user",time: 1545464616156}, function(ret){
api.alert({msg:JSON.stringify(ret)});
});
接收消息监听
setOnReceiveMessageListener(params)
ret:
{
message:{ //JSON对象;消息体数据格式
content: { //字符串类型;消息内容
text: 'Hello world!', //字符串类型;内容
extra: '' //字符串类型;附加文本
},
readReceiptInfo:{ //JSON对象;注:如果此字段无值,则返回空
hasRespond:true, //布尔类型;是否已经发送回执
isReceiptRequestMessage: , //布尔类型;是否需要回执消息
userIdList:[], //JSON数组类型;发送回执的用户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,如果无则显示空字符串
},
left:0, // 数字类型;每个数据包数据逐条上抛后,还剩余的条数
hasPackage: true, // 布尔类型;是否在服务端还存在未下发的消息包
offline: false // 布尔类型;消息是否是离线信息
}
iOS 系统、Android 系统
可提供的 1.0.0 及更高版本
发起单人通话
startSingleCall(params)
targetId:
var rong = api.require('UIRongChat');
var params = {
targetId : userId,
};
rong.startSingleCall(params);
iOS 系统、Android 系统
可提供的 1.0.0 及更高版本
会话页面
openConversation(params,callback(ret))
conversationType:
targetId:
title:
coutdownSeconds:
isNeedAlert:
online:
topBusinessCard:
{
grade:'4.5', //(可选项)字符串类型;用户评分;默认:4.5
totality:'23457' //(可选项)字符串类型;服务总数;默认:12345
portrait:'23457' //(可选项)字符串类型;照片w路径;默认:默认图标
}
chatQuestionCues:
videoVoip:
showSettingBtn:
addButtons:
[{
icon: '', //字符串类型;按钮图标本地路径; (android icon 大小建议 116 x 116)
title: '', //字符串类型;按钮文字;
index: //数字类型;按钮下标,注意从2000开始
}]
animation:
var rong = api.require('UIRongChat');
rong.openConversation({
conversationType: ' private',
targetId: 'ac002',
title: '刘德华',
topBusinessCard:{
grade:'4.6',
totality:'13456'
},
chatQuestionCues:['你是谁','我是谁','今夜谁是谁','星期六星期天','不用去起得早'],
videoVoip:true,
addButtons: [{
icon:'widget://res/b1.png',
title:'订单',
index:2025
},{
icon:'widget://res/a1.png',
title:'名片',
index:2026
}]
});
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
关闭会话页面
closeConversation()
animation:
var UIRongCloud = api.require('UIRongChat');
UIRongCloud.closeConversation({
animation: true
});
android系统、iOS系统
可提供的 1.0.0 及更高版本
添加需要设置用户信息的时刻的监听
注意:
可在本接口的回调里调用setUserInfo接口设置用户信息。
addNeedAvatarListener(callback(ret))
ret:
{
userId: //字符串类型;需要设置头像的用户的id
}
var rong = api.require('UIRongChat');
rong.addNeedUserInfoListener(function(ret) {
var params = {
userId : ret.userId,
nickname : '刘德华',
portraitUri : 'http://7xq864.com1.z0.glb.clouddn.com/apicloud/9ddf7d56095abd26f2c7ef72bb142563.png'
};
rong.setUserInfo(params);
});
iOS系统、android系统
可提供的 1.0.0 及更高版本
设置当前用户信息
setCurrentUserInfo(params)
userId:
nickname:
portraitUri:
extra:
var rong = api.require('UIRongChat');
var params = {
userId : userId,
nickname : '白兰地',
portraitUri : 'http://7xq864.com1.z0.glb.clouddn.com/apicloud/9ddf7d56095abd26f2c7ef72bb142563.png'
};
rong.setCurrentUserInfo(params);
iOS系统,Android系统
可提供的 1.0.0 及更高版本
设置用户信息
注意:在 addNeedUserInfoListener 接口回调内调用本接口设置用户信息。
setUserInfo(params)
userId:
nickname:
portraitUri:
extra:
var rong = api.require('UIRongChat');
var params = {
userId : userId,
nickname : '白兰地',
portraitUri : 'http://7xq864.com1.z0.glb.clouddn.com/apicloud/9ddf7d56095abd26f2c7ef72bb142563.png'
};
rong.setUserInfo(params);
iOS系统,Android系统
可提供的 1.0.0 及更高版本
刷新本地数据库缓存的用户信息
refreshUserInfoCache(params)
userId:
nickname:
portraitUri:
extra:
var rong = api.require('UIRongChat');
var params = {
userId : userId,
nickname : '白兰地',
portraitUri : 'http://7xq864.com1.z0.glb.clouddn.com/apicloud/9ddf7d56095abd26f2c7ef72bb142563.png'
};
rong.refreshUserInfoCache(params);
iOS系统,Android系统
可提供的 1.0.0 及更高版本
清空SDK中所有的用户信息缓存
clearUserInfoCache()
var rong = api.require('UIRongChat');
rong.clearUserInfoCache();
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取当前设备缓存的用户信息
getUserInfoCache(callback(ret))
userId:
ret:
{
nickname: //字符串类型;用户昵称
portraitUri: //字符串类型;头像url
extra: //字符串类型;附加信息
}
var rong = api.require('UIRongChat');
rong.getUserInfoCache(function(ret) {
api.alert({msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
添加点击聊天页面内头像的监听
注意:iOS端点击头像跳转到前端开发者自己开发的个人信息页面时,动画效果如果不流畅,可配合 screenshot、addScreenshot、removeScreenshot接口优化。示例代码如下:
var rong = api.require('UIRongChat');
rong.addPortraitClickListener(function(ret) {
rong.screenshot();
rong.closeConversation({animation:false});
rong.addScreenshot();
api.openWin({
name: "personalCenter",
url: "./personalCenter.html"
});
api.addEventListener({
name:'exitFromPersonalCenter'
},function(ret,err){
rong.removeScreenshot();
rong.openConversation({
conversationType: ' private',
targetId: 'ac002',
title: '刘德华',
animation:false
});
})
});
addPortraitClickListener(callback(ret))
ret:
{
userId: //字符串类型;点击的头像的用户的id
}
var rong = api.require('UIRongChat');
rong.addPortraitClickListener(function(ret) {
api.alert({msg:'点击的用户是'+JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
聊天页面关闭的监听
didChatViewClosed(callback(ret))
//只返回事件,没有参数
var rong = api.require('UIRongChat');
rong.didChatViewClosedr(function() {
api.alert({msg:'关闭聊天页面');
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
添加右上角按钮菜单的监听
addRightMenueListener(callback(ret))
ret:
{
index: //数字类型;点击的按钮的索引
}
var rong = api.require('UIRongChat');
rong.addRightMenueListener(function(ret) {
api.alert({msg:'点击的按钮是'+JSON.stringify(ret)});
});
iOS系统,Android系统
倒计时弹框按钮监听
addCoutdownAlertListener(callback(ret))
ret:
{
index: //数字类型;点击的按钮的索引,0:取消;1:立即购买
}
var rong = api.require('UIRongChat');
rong.addCoutdownAlertListener(function(ret) {
api.alert({msg:'点击的按钮是'+JSON.stringify(ret)});
});
iOS系统,Android系统
添加输入框上边提示问题点击的监听
addQuestionCuesListener(callback(ret))
ret:
{
index: //数字类型;点击的按钮的索引,从1开始,顺序同 openConversation 接口 chatQuestionCues 参数保持一致
}
var rong = api.require('UIRongChat');
rong.addQuestionCuesListener(function(ret) {
api.alert({msg:'点击的问题是'+JSON.stringify(ret)});
});
iOS系统,Android系统
添加输入框加号面板按钮点击监听 (注意:Android平台上,该方法需要在openConversation接口之前调用)
addBoardClickListener(callback(ret))
ret:
{
index: //数字类型;点击的按钮的索引,同 openConversation 接口 addButtons 参数的 index 一致
}
var rong = api.require('UIRongChat');
rong.addBoardClickListener(function(ret) {
api.alert({msg:'点击的问题是'+JSON.stringify(ret)});
});
iOS系统,Android系统
发送消息(存文本消息、名片消息、订单消息),同时自动更新聊天页面的UI。
注意:名片消息、订单消息和评价消息本质上还是发送了一个 RC:TxtMsg
类型的纯文本消息。只是名片和订单相关信息被写在消息体的扩展(expansion/extra)里,UI显示的时候从扩展(expansion/extra)取出相关数据展示。
expansion 是融云支持让开发者对消息体进行的扩展。扩展的限制有:1,单次设置不超过20个k-v对;2,key不超过32字符,value不超过64字符;3,每个消息体总共不能超过300个k-v对;
extra 是一个字符串类型参数,最大1024B,可设置为JSON字符串,其内容格式同 expansion
订单消息的 expansion 设置如下:
'title':'请进行订单确认及支付'
'cardType':'orderCard'
'orderNumber':'订单号'
'orderName':'订单名'
'orderAmount':'订单价格'
'orderState':'订单状态'
名片消息的 expansion 设置如下:
'cardType':'businessCard'
'bizName':'名片名'
'bizGrade':'用户评分'
'bizTotality':'服务总数'
'bizId':'名片id'
注意:由于 bizPortrait 大小超过 expansion 的限制,所以 bizTotality 设置在纯文本消息的消息内容text里。
评价消息的 expansion 设置如下:
'cardType':'evaluate'
'orderNumber':'订单号'
server 端设置 expansion 方法参考融云官方文档:https://docs.rongcloud.cn/v4-platform/views/im/noui/guide/group/msgmanage/expansion/web.html?match=imlib-web
sendMessage(params,callback(ret,err))
conversationType:
targetId:
cardType
text:
orderInfo:
{
orderName:'借贷纠纷', //字符串类型;订单名;
orderNumber:'23457' //字符串类型;订单名;
orderAmount:'45元', //字符串类型;订单假期;
orderState:'待支付' //字符串类型;订单状态;
}
bizInfo:
{
bizName:'刘律师', //字符串类型;人名;
bizGrade:'4.8' //字符串类型;用户评分;
bizTotality:'2345', //字符串类型;服务总数;
bizPortrait:'', //字符串类型;生活照图片地址;
bizId:"" //字符串类型;名片id
}
evaluateInfo:
{
orderNumber:'13245679' //字符串类型;订单号;
}
ret:
{
status: true, //布尔类型;是否发生成功
messageId: //数字类型;发送消息在本地数据库的ID
}
err:
{
code: //数字类型;错误码
}
var params = {
conversationType: ' private',
targetId: 'ac002',
orderInfo:{
orderNumber:"1234567891",
orderName:"这里显示订单名称",
orderAmount:"888元",
orderState:"待支付"
}
};
rong.sendMessage(params,function(ret,err){
if (ret.status) {
api.alert({msg:JSON.stringify(ret)});
} else {
api.alert({msg:JSON.stringify(err)});
}
});
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
点击名片和订单的监听
didCardMessageCellClick(callback(ret))
ret:
{
messageId:, //数字类型;消息在本地数据库的ID
cardType:'' //字符串类型;消息类型:businessCard|orderCard | evaluate
'orderNumber':'订单号' //字符串类型;有些消息无此字段
'orderName':'订单名' //字符串类型;有些消息无此字段
'orderAmount':'订单价格' //字符串类型;有些消息无此字段
'orderState':'订单状态' //字符串类型;有些消息无此字段
'orderNumber':'订单号' //字符串类型;有些消息无此字段
'bizName':'名片名' //字符串类型;有些消息无此字段
'bizGrade':'用户评分' //字符串类型;有些消息无此字段
'bizTotality':'服务总数' //字符串类型;有些消息无此字段
'bizId':'名片ID' //字符串类型;有些消息无此字段
}
var rong = api.require('UIRongChat');
rong.didCardMessageCellClick(function(ret) {
api.alert({msg:'点击的消息是'+JSON.stringify(ret)});
});
iOS系统,Android系统
点击消息的监听
addMessageCellListener(callback(ret))
ret:
{
messageId: //数字类型;消息在本地数据库的ID
}
var rong = api.require('UIRongChat');
rong.addMessageCellListener(function(ret) {
api.alert({msg:'点击的消息是'+JSON.stringify(ret)});
});
iOS系统,Android系统
更新订单消息的状态
updateMessageExpansion(params,callback(ret,err))
messageId:
orderState:
ret:
{
status: true, //布尔类型;是否更新成功
}
var params = {
messageId: 101,
orderState: '已支付'
};
rong.updateMessageExpansion(params,function(ret){
api.alert({msg:JSON.stringify(ret)});
});
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
更新订单消息的状态
updateMessageExtra(params,callback(ret))
messageId:
orderState:
ret:
{
status: true, //布尔类型;是否更新成功
}
var params = {
messageId: 101,
orderState: '已支付'
};
rong.updateMessageExtra(params,function(ret){
api.alert({msg:JSON.stringify(ret)});
});
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
将当前页面截屏,生成一张截图
screenshot( )
var rong = api.require('UIRongChat');
rong.screenshot();
iOS系统
可提供的 1.0.0 及更高版本
将screenshot接口截屏的图片添加到当前页面
addScreenshot( )
var rong = api.require('UIRongChat');
rong.addScreenshot();
iOS系统
可提供的 1.0.0 及更高版本
将addScreenshot接口添加到截屏图片移除
removeScreenshot( )
var rong = api.require('UIRongChat');
rong.removeScreenshot();
iOS系统
可提供的 1.0.0 及更高版本
区分不同的会话形式,字符串类型
iOS系统,Android系统
可提供的 1.0.0 及更高版本
会话通知提醒的状态,开启或者关闭,字符串类型
iOS系统,Android系统
可提供的 1.0.0 及更高版本
连接状态,字符串类型
iOS系统,Android系统
可提供的 1.0.0 及更高版本