addCallStateListener addCallEndListener groupChat makeGroupCall joinGroupCall makeCall pauseCall resumeCall closeCall chat closeConversation addAvatarListener chatList refreshChatList contactsList refreshContactsList configureChat setHandsFreeEnable
###创建群组、添加/删除好友、获取好友列表
createGroup destroyGroup getGroupInfo addContact addContactListener setAutoAcceptFriendInvitation approveFriendRequest declineFriendRequest deleteContact addMembersToGroup inviteUser removeMembersFromGroup changeGroupSubject leaveGroup
joinPublicGroup requestToJoinPublicGroup approveJoinGroupRequest declineJoinGroupRequest acceptInvitationFromGroup declineGroupInvitation addGroupListener setAutoAcceptGroupInvitation getGroupsListFromServer getAllPublicGroups
###消息、会话、聊天
getConversation deleteConversation deleteConversations getAllConversations loadMessageWithId sendText sendImage sendLocation sendVoice sendVideo sendFile sendCmd downloadMessageThumbnail downloadMessageAttachments sendMessageReadAck addMessageListener removeMessageListener loadMessageFromDB markMessageAsRead markAllMessagesAsRead fetchHistoryMessagesFromServer recallMessage
setLocalNotification setPushOption setApnsNickname ignoreGroupPush ignoreGroupsPush getAllIgnoredGroupIds
为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。
环信是北京易掌云峰科技有限公司旗下一家企业级服务软件提供商,环信成立于2013年4月,并于2016年荣膺“Gartner 2016 Cool Vendor”。产品有国内上线最早规模最大的即时通讯云平台——环信即时通讯云,移动端最佳实践的全媒体智能云客服平台—环信移动客服。截至2016年上半年,环信即时通讯云共服务了82149家App客户,环信移动客服共服务了29437家企业用户.
主要产品:
环信移动客服——全媒体智能云客服倡导者。
环信即时通讯云——国内最大的即时通讯云PaaS平台。
本插件封装了环信即时通讯云的开放SDK。基于官方发布的 easeChat 插件,在注册登录类接口基础上,扩展添加了 UI 类接口,适用于对 UI 设计要求不高的项目。可直接调用相关接口弹出聊天对话页面,真正实现了敏捷开发。
注意:
UIEasemob 是针对对UI和功能需求不那么高的开发者推出的插件。如果你的项目对UI和功能要求很深,请在充分调研本插件是否满足需求后再决定使用。本插件提供的UI接口不满足需求,建议使用 easeChat 插件,让前端去实现UI部分。UIEasemob 插件就是基于easeChat提供的接口基础上扩展了UI相关的部分接口。请在项目启动前做好调研评估后再决定是否使用本插件。
1. 注册
2. 服务器端集成
3. 客户端集成(插件使用)
使用此插件之前必须先配置 config 文件,配置方法如下:
<feature name="UIEasemob">
<param name="appKey" value="1154170221178369#apicloud" />
<param name="ios_apnsCertName" value="81qz3dBYB5q2nGji4IYrawr1" />
<param name="enableDnsConfig" value="true" />
<param name="chatPort" value= "6718"/>
<param name="chatServer" value="im2.ssy.citics.com" />
<param name="restServer" value="a1.ssy.citics.com:88" />
<param name="dnsURL" value="" />
<param name="miAppId" value="" />
<param name="miAppKey" value="" />
</feature>
字段描述:
appKey:区别 APP 的标识,参考开发者注册及管理后台。
ios_apnsCertName: iOS 中推送证书名称,参考制作与上传推送证书。如果不需要实现离线推送功能,请忽略此字段。
enableDnsConfig:(可选项)是否允许使用DNS,当使用了自己私有服务器请将此参数配置为false; 默认为true
chatPort: (可选项)IM服务器端口,enableDnsConfig 为 false 时生效
chatServer:(可选项)IM服务器地址,enableDnsConfig 为 false 时生效
restServer:(可选项)REST服务器地址,enableDnsConfig 为 false 时生效
dnsURL:(可选项)DNS URL 地址,enableDnsConfig 为 true 时生效
miAppId:(可选项) 小米推送的appid
miAppKey:(可选项) 小米推送的appkey
在android平台配置如下(iOS平台忽略此步骤)
<meta-data
name="EASEMOB_APPKEY"
value="1176170302115001#test" />
value:为appKey
环信为 IM 部分提供了 APNS 推送功能(本插件暂未封装推送相关功能,后期版本会逐步添加),如果您要使用,请跳转到APNS离线推送。
android平台集成发送位置功能注意事项(集成百度地图)
本插件的聊天界面有发送位置的功能,如要正常使用该功能,需要到百度地图的开发者平台注册应用,并申请appKey.并配置到config文件中。iOS平台定位功能不收本配置影响
配置示例:
<feature name="bMap">
<param name="android_api_key" value="WP99x2mSUWEysZxUaMh0GiGCYhBV8CQI" />
<param name="ios_api_key" value="81qz3dBYB5q2nGji4IYrawr1" />
</feature>
字段描述:
本文主要介绍了使用环信 IM 时,何时会收到远程推送、如何使用远程推送、如何获取远程推送的内容。
环信 SDK 根据 iOS App 运行的特性,主要有以下三种运行状态:
1、 当App在前台可见的时候,SDK处于前台活跃状态,此时是使用SDK长连接(addMessageListener接口 receive事件)接收消息。
2、 当App进入后台且在2分钟之内的时候,SDK处于后台活跃状态,此时是使用SDK长连接接收消息(addMessageListener接口 receive事件)。此时收到的消息会,插件会通过弹出本地通知的形式提醒用户,用户单击通知提示会启动该App。开发者亦可通过 setLocalNotification 接口设置此时是否弹出本地通知的提示。
3、 当App进入后台超过2分,被系统挂起,此时SDK处于不活跃状态,或者是主动把App进程杀死,此时如果有新消息,是通过苹果的APNs服务进行提醒的。用户点击通知提示框,开发者可通过 api.addEventListener 监听获取推送消息,详情参考下文。当App再次启动,SDK会去服务器拉取不活跃期间的消息。
集成推送功能流程如下文所示。此过程中涉及到的 AppID 即为 Bundle Identifie,与 YonBuilder移动开发 平台上的包名是同一个东西,在 YonBuilder移动开发 平台上应用的概览里可以查看。
登录苹果开发者中心申请推送证书,本过程操作详情参考配置环信推送证书
将上一步生成的 p12 证书上传到环信:登录环信管理后台,找到要上传证书的Appkey,点击进入详情。选择“推送证书”,然后选择“iOS”,为证书起名,并记住名称,并配置在config.xml文件中(详情参考上文config 文件配置方法)。选择上传证书,将上一步中生成的P12文件上传,并设置导出时设置的密码。选择证书类型,此处是“开发环境”(如果之前用的是production,则此处应该选择生产)。填写应用包名,应为bundle id,点击上传,完成上传证书操作。本过程操作详情参考上传环信推送证书
将 1 过程中生成的 provisioning profile 文件和证书上传 YonBuilder移动开发 平台,即可在 YonBuilder移动开发 平台应用打包出 ipa 安装包并安装(正式版发布到苹果商店,通过苹果商店下载安装)
以上步骤都已经实现后,还需要使用您 App 的用户允许通知,才能收到远程推送。您可以在设备的设置应用中,查看当前App是否允许通知。
如果 App 当前为活跃状态且未被系统冻结(按home键2分钟内app在后台运行状态),则您可通过在 addMessageListener 接口中监听 receive 事件捕获该消息,详情参考 addMessageListener 接口说明。此时若允许本地通知,则插件会弹出本地通知的提示框,用户点击该提示框,iOS系统会启动本App,同时api.addEventListener也会受到消息。
证书到期后,要更换新的推送证书,需要在环信管理后台将旧的删除,之后重新上传,上传时的命名要与旧证书的命名一致。一个appkey下可以传多个证书,这就可以实现夸App聊天,在不同App中初始化sdk的时候,指定不同的推送证书,每个证书对应当前App的bundle id,这样,用户在登录不同的App的时候就会绑定到不同的推送证书,从而实现夸App的聊天和推送。
注意:本插件 iOS 平台上最低适配系统版本为 iOS 9.0
android 1.3.6版本之前点击通知直接打开聊天页面不以此方式通知,1.3.6版本以及1.3.6以后版本点击通知不打开聊天页面以此方式通知 开发者需要自行打开聊天页面
点击通知栏的远程推送时,如果此时 App 已经被系统冻结,则YonBuilder移动开发会将本次推送的内容通过事件监听回调的方式交给开发者。具体使用如下:
api.addEventListener({
name: 'noticeclicked'
}, function(ret) {
if (ret && ret.value) {
var type = ret.type;//0YonBuilder移动开发收到的推送内容,1插件开发者自定义的
var result = ret.value;//推送内容
}
})
{
“localNotification”:false,//是否是本地通知,若为true则下文数据格式同addMessageListener接口监听receive事件回调的数据格式
"aps":{
"alert":{
"body":"您有一条新消息" // 消息内容
},
"badge":1, // 角标数
"sound":"default" // 提示音
},
"e":"自定义推送扩展",//自定义推送扩展
"f":"6001", // 消息发送方
"t":"6006", // 消息接收方
"m":"373360335316321408", // 消息id
"g":"1421300621769" // 群组id(如果是单聊则没有该字段)
}
<feature name="UIEasemob">
<param name="androidChannelId" value="11"/>
<param name="androidChannel" value="appchannel"/>
<param name="androidChannelDes" value="notification description"/>
</feature>
字段描述:
androidChannelId:安卓8.0推送渠道配置,渠道id。后台通过此渠道id推送
androidChannel:安卓8.0推送渠道配置,渠道名称。
androidChannelDes:安卓8.0推送渠道配置,渠道描述。
注册接口
easeRegister({params},callback(ret, err))
username:
password:
ret:
{
status: true //布尔类型;是否注册成功,true|false
}
err:
{
code: 1, //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.easeRegister({
username: '',
password: ''
},function(ret, err) {
if (ret.status) {
api.alert({ msg:'注册成功'});
} else {
api.alert({ msg:JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
登录接口
login({params},callback(ret, err))
username:
password:
autoLogin:
类型:布尔
描述:是否开启自动登录(仅支持ios)
默认:false
说明:
自动登录:即首次登录成功后,不需要再次调用登录方法,在下次 APP 启动时,SDK 会自动为您登录。并且如果您自动登录失败,也可以读取到之前的会话信息。
本插件自动登录属性默认是关闭的,需要您在登录时自定义设置,以便您在下次 APP 启动时不需要再次调用环信登录,并且能在没有网的情况下得到会话列表。
自动登录在以下几种情况下会被取消:
用户调用了插件的登出动作;
用户在别的设备上更改了密码,导致此设备上自动登录失败;
用户的账号被从服务器端删除;
用户从另一个设备登录,把当前设备上登录的用户踢出。
所以,在您调用登录方法前,应该先调用 isAutoLogin 接口判断是否设置了自动登录,如果设置了,则不需要您再调用。可通过 addAutoLoginListener 接口监听自动登录完成的回调。
ret:
{
status: true //布尔类型;是否登录成功,true|false
}
err:
{
code: 1, //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.login({
username: '',
password: '',
autoLogin: true
},function(ret, err) {
if (ret.status) {
api.alert({ msg:'登录成功'});
} else {
api.alert({ msg:JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
退出登录
退出登录分两种类型:主动退出登录和被动退出登录。
在被动退出时插件内部处理,不需要调用本接口。
logout(callback(ret, err))
ret:
{
status: true //布尔类型;是否成功退出登录,true|false
}
err:
{
code: 1, //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.logout(function(ret, err) {
if (ret.status) {
api.alert({ msg:'登录成功'});
} else {
api.alert({ msg:JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
连接服务器的状态变化事件的监听
有以下几种情况, 会引起该方法的调用:
当掉线时,SDK 会自动重连,只需要监听重连相关的回调,无需进行任何操作。
addConnectionListener(callback(ret))
ret:
{
state: 'connected' //字符串类型;网络连接状态,取值范围如下:
//connected:已连接
//disconnected:未连接
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.addConnectionListener(function(ret) {
api.alert({msg: JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
账号异常事件的监听
addAccountListener(callback(ret))
ret:
{
eventType: 'otherLogin' //字符串类型;监听的事件类型,取值范围如下:
//otherLogin:当前登录账号在其它设备登录事件
//remove:当前登录账号已经被从服务器端删除事件
//forcedToLogout:当前登录账号被强制退出时会收到该回调,有以下原因:1.密码被修改;2.登录设备数过多;
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.addAccountListener(function(ret){
api.alert({ msg:ret.eventType});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置单聊音视频通话状态的监听
addCallStateListener(callback(ret))
ret:
{
state:'' , //通话状态;取值如下
//connected:通话通道建立完成,用户A和用户B都会收到这个回调
//network_unstable:网络不稳定
//network_normal:网络恢复正常
//network_disconnected:网络中断
//accepted:用户B同意用户A拨打的通话后,用户A和B会收到这个回调
callId:'', //字符串类型;会话id
isRecord:, //布尔类型 ;是否保存了录音
serverRecordId:'' //字符串类型;会话在服务器保存了录音的id
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.addCallStateListener(function(ret){
console.log(JSON.stringify(ret));
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
添加单聊语音和视频通话结束监听
addCallEndListener(callback(ret))
{
reason: '', //字符类型;通话结束原因
//0:对方挂断
//1:对方没有响应
//2:对方拒接
//3:对方占线
//4:失败
//5:功能不支持
//6:对方不在线
time:'10', //字符类型;通话时长,单位为秒
callType:'1', //数字类型;通话类型;0:实时语音1:实时视频
callId:'1', //字符类型;(Android不支持)会话标识符;音视频通话的id
localName:'123',//字符类型;通话本地的username
remoteName:'321',//字符类型;对方的username
isCaller:true, //布尔类型;是否为主叫方
conversationId:''//字符类型;会话id,(ios不支持)
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.addCallEndListener(function(ret){
api.alert({ msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
注册华为推送,上传token
sendHMSPushTokenToServer({params})
token:
var UIEasemob = api.require('UIEasemob');
UIEasemob.sendHMSPushTokenToServer({
token: '',
appid: ''
});
Android系统
可提供的 1.0.0 及更高版本
创建群聊并打开群聊界面,同时添加邀请群聊成员(仅android支持)
groupChat({params})
type:
userList:
bg:
avatar:
{
'username':'avatarpath',
'username':'avatarpath
}
createrNickname:
var UIUIEasemob = api.require('UIUIEasemob');
UIUIEasemob.groupChat({
chatType: 'video',
userList:['huanxinUser1','huanxinUser2']
});
Android系统
可提供的 1.0.0 及更高版本
发起音视频群聊(仅iOS支持)
makeGroupCall({params})
groupId:
type:
inviteType:
chatType:
var UIEasemob = api.require('UIEasemob');
UIEasemob.makeGroupCall({
groupId: ''
});
iOS系统
可提供的 1.0.0 及更高版本
当收到群聊音视频通话邀请的时候,调用本接口唤起音视频聊天页面(仅iOS支持,android自动弹出)
joinGroupCall({params},callback(ret,err))
conversationId:
chatType:
messageId:
ret:
{
status: true , //布尔类型;是否成功,true|false
}
err:
{
code: 1, //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.joinGroupCall({
conversationId: '',
chatType: '',
messageId: ''
},function(ret,err){
api.alert({ msg:JSON.stringify(ret)});
});
iOS系统
可提供的 1.0.0 及更高版本
发起音视频单聊
makeCall({params})
conversationId:
type:
recordOnServer:
mergeStream:
var UIEasemob = api.require('UIEasemob');
UIEasemob.makeCall({
conversationId: '123',
type: 'voice',
bg:''
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
设置语音/视频通话界面免提按钮是否可用
setHandsFreeEnable({params})
enable:
var UIEasemob = api.require('UIEasemob');
UIEasemob.setHandsFreeEnable({
enable: true
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
暂停音视频单聊
pauseCall()
var UIEasemob = api.require('UIEasemob');
UIEasemob.pauseCall({);
iOS系统,Android系统
可提供的 1.0.0 及更高版本
恢复音视频单聊
resumeCall()
var UIEasemob = api.require('UIEasemob');
UIEasemob.resumeCall();
iOS系统,Android系统
可提供的 1.0.0 及更高版本
挂断音视频单聊
closeCall()
var UIEasemob = api.require('UIEasemob');
UIEasemob.closeCall();
iOS系统,Android系统
可提供的 1.0.0 及更高版本
根据会话 ID 和类型创建并打开聊天页面
chat({params})
conversationId:
chatType:
var UIEasemob = api.require('UIEasemob');
UIEasemob.chat({
conversationId: '123',
chatType: 'chat'
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
关闭会话页面
closeConversation()
var UIEasemob = api.require('UIEasemob');
UIEasemob.closeConversation();
iOS、Android系统
可提供的1.0.0及更高版本
聊天页面内头像点击事件监听
addAvatarListener(callback(ret))
ret:
{
messageModel: { //JSON 对象;头像信息
message: {} //JSON 对象;消息详情参考附录:消息内容
}
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.addAvatarListener(function(ret) {
api.alert({msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的1.0.0及更高版本
打开聊天列表页面
chatList({params},callback(ret,err))
navigationTitle:
{
title: '', //字符串类型;聊天列表页面标题;默认:聊天
titleColor: '#000' //字符串类型;聊天列表页面标题文字颜色;默认:#000
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.chatList({
navigationTitle:{
title: '',
titleColor: '#fff'
}
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
刷新聊天列表
refreshChatList(callback(ret,err))
var UIEasemob = api.require('UIEasemob');
UIEasemob.refreshChatList();
iOS系统,Android系统
可提供的 1.0.0 及更高版本
打开联系人列表页面
contactsList({params},callback(ret,err))
navigationTitle:
{
title: '', //字符串类型;联系人列表页面标题;默认:联系人
titleColor: '#000' //字符串类型;联系人列表页面标题文字颜色;默认:#000
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.contactsList({
navigationTitle:{
title: '',
titleColor: '#fff'
}
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
刷新联系人列表
refreshContactsList(callback(ret,err))
var UIEasemob = api.require('UIEasemob');
UIEasemob.refreshContactsList();
iOS系统,Android系统
可提供的 1.0.0 及更高版本
环信相关配置
configureChat({params})
navigationStyle:
{
bg:'#fff', //字符串类型;导航条背景色,支持rgb、rgba、#;默认:#fff
backColor: '#000', //字符串类型;导航条返回按钮色;默认:#000(仅iOS支持)
backImg:'', //字符串类型;导航条返回按钮图片路径(仅android支持)
}
navigationTitle:
{
title: '', //字符串类型;聊天页面标题;默认:聊天用户环信ID
titleColor: '#fff' //字符串类型;聊天页面标题文字颜色;默认:#fff
}
avatar:
{
'username':'avatarpath',
'username':'avatarpath
}
nickname:
{
'username':'nickname',
'username':'nickname'
}
msgNotify:
msgVoice
msgVibrate
hideLocation:
var UIEasemob = api.require('UIEasemob');
UIEasemob.configureChat();
iOS系统,Android系统
可提供的 1.0.0 及更高版本
创建群组
createGroup({params},callback(ret, err))
name:
description:
message:
userCount:
invitees:
['6001','6002','6003','6004']
style:
IsInviteNeedConfirm:
ret:
{
status: true , //布尔类型;是否创建成功,true|false
group: { //JSON对象;创建的群组信息
groupId: '', //字符串类型;群组id
subject: '', //字符串类型;群组的主题
description: '', //字符串类型;群组的描述
memberCount: , //数字类型;群组当前的成员数量
setting: {
style: '', //字符串类型;群组的类型
maxUserCount: //数字类型;群组的最大成员数(3 - 2000,默认是200)
},
owner: '', //字符串类型;群组的所有者,拥有群的最高权限(只有一人)
members: [], //数组类型;群组的成员列表
blackList: [], //数组类型;群组的黑名单,需要owner权限才能查看,非owner返回undefine
isPublic: , //布尔类型;此群是否为公开群
isBlocked: , //布尔类型;是否屏蔽群消息
isPushNotificationEnabled://布尔类型;此群组是否接收消息推送通知,(仅支持ios)
}
}
err:
{
code: 1, //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.createGroup({
name:'123',
description: '大牛群',
message:'欢迎加入!',
userCount:200,
invitees:['6001','6002','6003','6004'],
style: 'public'
},function(ret, err) {
if (ret.status) {
api.alert({ msg:'创建成功'});
} else {
api.alert({ msg:JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
解散群组 ,需要owner/admin权限
destroyGroup({params},callback(ret,err))
id:
ret:
{
status: true , //布尔类型;是否解散成功,true|false
}
err:
{
code: 1, //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob. destroyGroup({
id:'123',
},function(ret, err) {
if (ret.status) {
api.alert({ msg:'解散'});
} else {
api.alert({ msg:JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取制定 id 的群组信息 ,需要owner/admin权限
getGroupInfo({params},callback(ret))
id:
ret:
{
status: true , //布尔类型;是否获取成功,true|false
group: { //JSON对象;获取的群组信息
groupId: '', //字符串类型;群组id
subject: '', //字符串类型;群组的主题
description: '', //字符串类型;群组的描述
memberCount: , //数字类型;群组当前的成员数量
setting: { //仅支持ios
style: '', //字符串类型;群组的类型
maxUserCount: //数字类型;群组的最大成员数(3 - 2000,默认是200)
},
owner: '', //字符串类型;群组的所有者,拥有群的最高权限(只有一人)
members: [], //数组类型;群组的成员列表
blackList: [], //数组类型;群组的黑名单,需要owner权限才能查看,非owner返回undefine
isPublic: , //布尔类型;此群是否为公开群
isBlocked: , //布尔类型;是否屏蔽群消息
isPushNotificationEnabled://布尔类型;此群组是否接收消息推送通知,(仅支持ios)
}
}
err:
{
code: 1, //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.getGroupInfo({
id:'123',
},function(ret, err) {
if (ret.status) {
api.api.alert({msg: JSON.stringify(ret)});
} else {
api.alert({ msg:JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
添加好友
addContact({params},callback(ret, err))
name:
message:
ret:
{
status: true , //布尔类型;是否添加成功,true|false
name: '' //字符串类型;用户名
}
err:
{
code: 1, //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.addContact({
name:'123',
message:'欢迎加入!'
},function(ret, err) {
if (ret.status) {
api.alert({ msg:'添加成功'});
} else {
api.alert({ msg:JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
添加好友状态监听
addContactListener(callback(ret))
ret:
{
state: '', //字符串类型;添加好友状状态,取值范围如下:
//friendRequestDidApproveByUser:用户B同意用户A的加好友请求后,用户A会收到这个回调
//friendRequestDidDeclineByUser:用户B拒绝用户A的加好友请求后,用户A会收到这个回调
//friendshipDidRemoveByUser:用户B删除与用户A的好友关系后,用户A,B会收到这个回调
//friendshipDidAddByUser:用户B同意用户A的好友申请后,用户A和用户B都会收到这个回调
//friendRequestDidReceiveFromUser:用户B申请加A为好友后,用户A会收到这个回调
username:'', //state为friendshipDidRemoveByUser时此字段为用户好友关系的另一方,state为其他字段时此字段为用户B
message:'' //好友邀请信息,仅state为friendRequestDidReceiveFromUser时有效
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.addContactListener(function(ret) {
api.alert(ret);
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置是否自动同意好友申请
setAutoAcceptFriendInvitation({params})
isAutoAcceptFriendInvitation:
var UIEasemob = api.require('UIEasemob');
UIEasemob.setAutoAcceptFriendInvitation({
isAutoAcceptFriendInvitation:true
});
iOS系统,Android系统
可提供的1.0.0及更高版本
同意加好友的申请
approveFriendRequest({params},callback(ret, err))
name:
ret:
{
status: true , //布尔类型;是否同意成功,true|false
name: '' //字符串类型;用户名
}
err:
{
code: 1, //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.approveFriendRequest({
name:'YonBuilder移动开发'
},function(ret, err) {
if (ret.status) {
api.alert({ msg:'同意成功'});
} else {
api.alert({ msg:JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
拒绝加好友的申请
declineFriendRequest({params},callback(ret, err))
name:
ret:
{
status: true , //布尔类型;是否拒绝成功,true|false
name: '' //字符串类型;用户名
}
err:
{
code: 1, //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.declineFriendRequest({
name:'YonBuilder移动开发'
},function(ret, err) {
if (ret.status) {
api.alert({ msg:'同意成功'});
} else {
api.alert({ msg:JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
删除好友
deleteContact({params},callback(ret, err))
name:
isDeleteConversation:
ret:
{
status: true , //布尔类型;是否删除成功,true|false
name: '' //字符串类型;用户名
}
err:
{
code: 1, //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.deleteContact({
name:'',
isDeleteConversation: true
},function(ret, err) {
if (ret.status) {
api.alert({ msg:'删除成功'});
} else {
api.alert({ msg:JSON.stringify(err)});
}
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
邀请单人或多人进入群组, (注:android如果是群主加人可以调用此接口)
addMembersToGroup({params},callback(ret))
names:
groupId:
message:
ret:
{
status: true , //布尔类型;是否获取成功,true|false
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.addMembersToGroup({
groupId:'123'
names:['user1','user2'],
message:'欢迎'
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
私有群里,如果开放了群成员邀请,群成员邀请调用该接口邀请成员
inviteUser({params},callback(ret))
names:
groupId:
message:
ret:
{
status: true , //布尔类型;是否获取成功,true|false
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.inviteUser({
groupId:'123'
names:['user1','user2'],
message:'欢迎'
},function(ret) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
Android系统
可提供的 1.0.0 及更高版本
把单人或多人移出群组
removeMembersFromGroup({params},callback(ret))
names:
groupId:
ret:
{
status: true , //布尔类型;是否成功,true|false
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.removeMembersFromGroup({
groupId:'123'
names:['user1','user2']
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
修改群组群名称
changeGroupSubject({params},callback(ret))
groupName:
groupId:
ret:
{
status: true , //布尔类型;是否获取成功,true|false
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.changeGroupSubject({
groupId:'123'
groupName:'apple'
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
用户主动退出群组
leaveGroup({params},callback(ret))
groupId:
ret:
{
status: true , //布尔类型;是否获取成功,true|false
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.leaveGroup({
groupId:'123'
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
加入一个公开群组
joinPublicGroup({params},callback(ret))
groupId:
ret:
{
status: true , //布尔类型;是否获取成功,true|false
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.joinPublicGroup({
groupId:'123'
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
申请加入一个需批准的公开群组
requestToJoinPublicGroup({params},callback(ret))
groupId:
aMessage:
ret:
{
status: true , //布尔类型;是否获取成功,true|false
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.requestToJoinPublicGroup({
groupId:'123',
aMessage:'sss'
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
批准入群申请
approveJoinGroupRequest({params},callback(ret))
groupId:
username:
ret:
{
status: true , //布尔类型;是否获取成功,true|false
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.approveJoinGroupRequest({
groupId:'123',
username:'user1'
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
拒绝入群申请
declineJoinGroupRequest({params},callback(ret))
groupId:
username:
reason:
ret:
{
status: true , //布尔类型;是否获取成功,true|false
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.declineJoinGroupRequest({
groupId:'123',
username:'user1',
reason:'不认识'
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
接受入群邀请
acceptInvitationFromGroup({params},callback(ret))
groupId:
username:
ret:
{
status: true , //布尔类型;是否获取成功,true|false
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.acceptInvitationFromGroup({
groupId:'123',
username:'user1',
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
拒绝入群邀请
declineGroupInvitation({params},callback(ret))
groupId:
username:
reason:
ret:
{
status: true , //布尔类型;是否获取成功,true|false
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.declineGroupInvitation({
groupId:'123',
username:'user1',
reason:'123'
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
群组状态监听
addGroupListener(callback(ret))
ret:
{
state: 'userJoin', //字符串类型;群组状态,取值范围如下:
//muteMember:有成员被加入禁言列表;此状态下只有muteMembers、groupId字段有效
//unmuteMember:有成员被移出禁言列表;此状态下只有unmuteMembers、groupId字段有效
//userJoin:群组加入新成员
//userLeave:群成员退出
//receiveLeavedGroup:被动退群
//groupDestruction:群解散
//joinGroupReceive:群组的群主收到用户的入群申请
//joinGroupDecline:群主拒绝用户A的入群申请后,用户A会接收到该回调
//joinGroupApprove:群主同意用户A的入群申请后,用户A会接收到该回调
//groupInvitationDidReceive:用户A邀请用户B入群,用户B接收到该回调
//groupInvitationDidAccept:用户B同意用户A的入群邀请后,用户A接收到该回调
//groupInvitationDidDecline:用户B拒绝用户A的入群邀请后,用户A接收到该回调
//didJoinGroup:SDK自动同意了用户A的加B入群邀请后,用户B接收到该回调,需要设置setAutoAcceptGroupInvitation的setAutoAcceptGroupInvitation属性为YES
user:'user1', //群成员名称(iOS state为joinGroupDecline和joinGroupApprove、receiveLeavedGroup时没有此字段,state为groupInvitationDidReceive和didJoinGroup user为邀请者 state为groupInvitationDidAccept和groupInvitationDidDecline user为被邀请者, android state为receiveLeavedGroup, groupDestruction没有此字段)
groupId:'111', //群组id
receiveReason:'', //申请者的附属信息(当state为userJoin,userLeave,joinGroupDecline,joinGroupApprove,groupInvitationDidAccept没有此字段state为groupInvitationDidReceive receiveReason为邀请信息,state为groupInvitationDidDecline receiveReason为拒绝理由,state为didJoinGroup receiveReason为邀请消息, android state为receiveLeavedGroup, groupDestruction没有此字段)
muteMembers:[], // 被禁言的成员;此字段只有在state为muteMember有效
unmuteMembers:[], // 被解除禁言的成员;此字段只有在state为unmuteMembers有效
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.addGroupListener(function(ret) {
api.alert(ret);
});
iOS系统,Android系统
可提供的1.0.0及更高版本
设置用户是否自动同意群邀请(需要在createGroup接口的IsInviteNeedConfirm设置为true的情况下本接口才会生效)
setAutoAcceptGroupInvitation({params},callback(ret))
isAutoAcceptGroupInvitation:
ret:
{
status: true , //布尔类型;是否设置成功,true|false
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.setAutoAcceptGroupInvitation({
isAutoAcceptGroupInvitation:true
},function(ret) {
api.alert(ret);
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
按数目从服务器获取自己加入的群组
getGroupsListFromServer({params},callback(ret,err))
pageNum:
pageSize:
ret:
{
status: true , //布尔类型;是否获取成功,true|false
groups:[{ //JSON对象;获取的群组信息
groupId: '', //字符串类型;群组id
subject: '', //字符串类型;群组的主题
description: '', //字符串类型;群组的描述
memberCount: , //数字类型;群组当前的成员数量
setting: { //仅支持ios
style: '', //字符串类型;群组的类型
maxUserCount: //数字类型;群组的最大成员数(3 - 2000,默认是200)
},
owner: '', //字符串类型;群组的所有者,拥有群的最高权限(只有一人)
isPublic: , //布尔类型;此群是否为公开群
isBlocked: , //布尔类型;是否屏蔽群消息
isPushNotificationEnabled://布尔类型;此群组是否接收消息推送通知,(仅支持ios)
}]
}
err:
{
code: //数字类型;错误码
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.getGroupsListFromServer({
pageNum:1,
pageSize:10
},function(ret) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取公开群组
getAllPublicGroups({params},callback(ret,err))
pageNum:
pageSize:
ret:
{
status: true , //布尔类型;是否获取成功,true|false
cursor:'', //字符串类型;获取下一段结果的游标
groups:[{ //JSON对象;获取的群组信息
groupId: '', //字符串类型;群组id
subject: '', //字符串类型;群组的主题
description: '', //字符串类型;群组的描述(android不支持)
memberCount: , //数字类型;群组当前的成员数量(android不支持)
setting: { //(android不支持)
style: '', //字符串类型;群组的类型
maxUserCount: //数字类型;群组的最大成员数(3 - 2000,默认是200)
},
owner: '', //字符串类型;群组的所有者,拥有群的最高权限(只有一人)(android不支持)
isPublic: , //布尔类型;此群是否为公开群(android不支持)
isBlocked: , //布尔类型;是否屏蔽群消息(android不支持)
isPushNotificationEnabled://布尔类型;此群组是否接收消息推送通知,(android不支持)
}]
}
err:
{
code: //数字类型;错误码
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.getAllPublicGroups({
pageNum:0,
pageSize:10
},function(ret) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
将一组成员禁言,需要Owner / Admin权限
muteMembers({params},callback(ret))
muteMembers:
muteMilliseconds:
groupId:
{
status: true , //布尔类型;是否禁言成功,true|false
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.muteMembers({
muteMembers:['',''],
groupId: '123'
},function(ret) {
api.alert({ msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
将一组成员解除禁言,需要Owner / Admin权限
unmuteMembers({params},callback(ret))
muteMembers:
groupId:
{
status: true , //布尔类型;是否解除禁言成功,true|false
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.unmuteMembers({
muteMembers:['',''],
groupId: '123'
},function(ret) {
api.alert({ msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
变更群组所有者
changeOwner({params})
groupId:
newOwner:
{
status: true , //布尔类型;变更成功,true|false
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.changeOwner({
newOwner:'lan',
groupId: '123'
},function(ret) {
api.alert({ msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
新建/获取一个会话
getConversation({params},callback(ret))
conversationId:
type:
ifCreate:
ret:
{
status: true , //布尔类型;是否创建成功,true|false
conversation: {} //JSON 对象;返回会话信息,详细内容参考附件:会话信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.getConversation({
conversationId: '',
type: 'chat',
ifCreate: true
},function(ret) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
从数据库中获取消息,获取到的消息是startMsgId之前的pagesize条消息;
loadMessageFromDB({params},callback(ret,err))
conversationId:
type:
startMsgId:
pagesize:
{
status: true , //布尔类型;变更成功,true|false
messages: [] //数组对象;返回消息内容,详情参考附录:消息内容内容
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.loadMessageFromDB({
conversationId: '',
type: 'chat',
startMsgId:''
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
将会话指定消息置为已读
markMessageAsRead({params},callback(ret,err))
conversationId:
type:
messageId:
ret:
{
status: true, //布尔类型;是否设置成功,true|false
}
err:
{
code: //数字类型;错误码
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.markMessageAsRead({
conversationId: '',
type: 'chat',
messageId: ''
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
将会话所有消息置为已读
markAllMessagesAsRead({params},callback(ret,err))
conversationId:
type:
ret:
{
status: true, //布尔类型;是否设置成功,true|false
}
err:
{
code: //数字类型;错误码
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.markAllMessagesAsRead({
conversationId: '',
type: 'chat'
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
从服务器获取指定会话的历史消息;此接口需要开通环信增值服务,未开通不会返回数据
fetchHistoryMessagesFromServer({params},callback(ret,err))
conversationId:
type:
startMsgId:
pagesize:
ret:
{
status: true , //布尔类型;是否成功,true|false
messages: [], //数组对象;返回消息内容,详细内容参考附件:消息内容
cursor:10 //字符类型;获取下一段结果的游标
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.fetchHistoryMessagesFromServer({
conversationId: '',
type: 'chat',
startMsgId:''
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
撤回一条消息(此接口必须开通增值服务)
recallMessage({params},callback(ret,err))
conversationId:
type:
messageId:
ret:
{
status: true , //布尔类型;是否撤回成功,true|false
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.recallMessage({
conversationId:'',
messageId:''
},function(ret,err) {
if(ret.status)
api.alert('撤回消息成功');
});
ios, android系统
可提供的 1.0.0 及更高版本
删除会话
deleteConversation({params},callback(ret,err))
conversationId:
isDeleteMessages:
ret:
{
status: true , //布尔类型;是否删除成功,true|false
conversation: {} //JSON 对象;返回删除的会话信息,详细内容参考附件:会话信息
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.deleteConversation({
conversationId: '',
isDeleteMessages: true
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
删除一组会话
deleteConversations({params},callback(ret,err))
conversationIds:
isDeleteMessages:
ret:
{
status: true //布尔类型;是否删除成功,true|false
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.deleteConversations({
conversationIds: [],
isDeleteMessages: true
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
获取所有会话,如果内存中不存在会从DB中加载
getAllConversations(callback(ret,err))
ret:
{
conversations: [] //数组类型;返回的会话信息组成的数组,会话信息详细内容参考附件:会话信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.getAllConversations(function(ret) {
api.alert({ msg:JSON.stringify(ret)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
根据会话id 及其类型,获取指定消息 ID 的消息
loadMessageWithId({params},callback(ret,err))
conversationId:
type:
messageId:
ret:
{
status: true, //布尔类型;是否获取成功,true|false
message: {} //JSON 对象;获取的消息,详情参考附录:消息内容
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.loadMessageWithId({
conversationId: '',
type: 'chat',
messageId: ''
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
发送文本消息
sendText({params},callback(ret,err))
conversationId:
chatType:
text:
from:
to:
ext:
ret:
{
status: true, //布尔类型;是否发送成功,true|false
message: {} //JSON 对象;发送的消息,详情参考附录:消息内容;注:此接口返回的消息id是临时id,并不是服务器上的id
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.sendText({
conversationId: '',
chatType: 'chat',
text: 'YonBuilder移动开发 hello',
from: '',
to: 'YonBuilder移动开发',
ext: {}
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
发送图片消息
sendImage({params},callback(ret,err))
conversationId:
chatType:
path:
displayName:
from:
to:
ext:
ret:
{
status: true, //布尔类型;是否发送成功,true|false
message: {} //JSON 对象;发送的消息,详情参考附录:消息内容;注:此接口返回的消息id是临时id,并不是服务器上的id
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.sendImage({
conversationId: '',
chatType: 'chat',
path: 'widget://res/abc.png',
displayName: 'cloud',
from: '',
to: 'YonBuilder移动开发',
ext: {}
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
发送位置消息
sendLocation({params},callback(ret,err))
conversationId:
chatType:
address:
latitude:
longitude:
from:
to:
ext:
ret:
{
status: true, //布尔类型;是否发送成功,true|false
message: {} //JSON 对象;发送的消息,详情参考附录:消息内容;注:此接口返回的消息id是临时id,并不是服务器上的id
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.sendLocation({
conversationId: '',
chatType: 'chat',
address: '北京市天安门',
latitude: ,
longitude: ,
from: '',
to: 'YonBuilder移动开发',
ext: {}
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
发送声音消息
sendVoice({params},callback(ret,err))
conversationId:
chatType:
path:
displayName:
length:
from:
to:
ext:
ret:
{
status: true, //布尔类型;是否发送成功,true|false
message: {} //JSON 对象;发送的消息,详情参考附录:消息内容;注:此接口返回的消息id是临时id,并不是服务器上的id
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.sendVoice({
conversationId: '',
chatType: 'chat',
path: 'widget://res/abc.mp3',
displayName: 'cloud',
from: '',
to: 'YonBuilder移动开发',
ext: {}
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
发送视频消息
sendVideo({params},callback(ret,err))
conversationId:
chatType:
path:
displayName:
length:
thumbPath:
from:
to:
ext:
ret:
{
status: true, //布尔类型;是否发送成功,true|false
message: {} //JSON 对象;发送的消息,详情参考附录:消息内容;注:此接口返回的消息id是临时id,并不是服务器上的id
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.sendVideo({
conversationId: '',
chatType: 'chat',
path: 'widget://res/abc.mp4',
displayName: 'cloud',
from: '',
to: 'YonBuilder移动开发',
ext: {}
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
发送文件消息
sendFile({params},callback(ret,err))
conversationId:
chatType:
path:
displayName:
from:
to:
ext:
ret:
{
status: true, //布尔类型;是否发送成功,true|false
message: {} //JSON 对象;发送的消息,详情参考附录:消息内容;注:此接口返回的消息id是临时id,并不是服务器上的id
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.sendFile({
conversationId: '',
chatType: 'chat',
path: 'widget://res/abc.zip',
displayName: 'cloud',
from: '',
to: 'YonBuilder移动开发',
ext: {}
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
发送命令消息
sendCmd({params},callback(ret,err))
conversationId:
chatType:
action:
from:
to:
ext:
ret:
{
status: true, //布尔类型;是否发送成功,true|false
message: {} //JSON 对象;发送的消息,详情参考附录:消息内容;注:此接口返回的消息id是临时id,并不是服务器上的id
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.sendCmd({
conversationId: '',
chatType: 'chat',
action: '出发',
from: '',
to: 'YonBuilder移动开发',
ext: {}
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
下载缩略图(图片消息的缩略图或视频消息的第一帧图片),
SDK会自动下载缩略图,所以除非自动下载失败,
用户不需要自己下载缩略图
downloadMessageThumbnail({params},callback(ret,err))
conversationId:
chatType:
messageId:
ret:
{
status: true, //布尔类型;是否下载成功,true|false
message: {} //JSON 对象;下载的消息,详情参考附录:消息内容
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.downloadMessageThumbnail({
conversationId: '',
chatType: 'chat',
messageId: ''
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
下载消息附件(语音,视频,图片原图,文件),
SDK会自动下载语音消息,所以除非自动下载语音失败,
用户不需要自动下载语音附件
downloadMessageAttachments({params},callback(ret,err))
conversationId:
chatType:
messageId:
ret:
{
status: true, //布尔类型;是否下载成功,true|false
message: {} //JSON 对象;下载的消息,详情参考附录:消息内容
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.downloadMessageAttachments({
conversationId: '',
chatType: 'chat',
messageId: ''
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
发送消息已读回执
sendMessageReadAck({params},callback(ret,err))
conversationId:
chatType:
messageId:
ret:
{
status: true, //布尔类型;是否发送成功,true|false
message: {} //JSON 对象;发送的回执的消息,详情参考附录:消息内容
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.sendMessageReadAck({
conversationId: '',
chatType: 'chat',
messageId: ''
},function(ret,err) {
if(ret.status)
api.alert({ msg:JSON.stringify(ret)});
else
api.alert({ msg:JSON.stringify(err)});
});
iOS系统,Android系统
可提供的 1.0.0 及更高版本
添加消息相关事件监听
addMessageListener({params}, callback(ret, err))
name:
ret:
{
conversations: [], //数组类型;仅当 name 为 conversationListDidUpdate 时本参数有值,发送变化的会话信息组成的数组,会话信息参考附录:会话信息
messages: [] //数组类型;仅当 name 非 conversationListDidUpdate 时本参数有值,消息组成的数组,消息详情参考附录:消息内容
isPushMsg: false //布尔类型;仅当 name 非 receive 时本参数有值。表示是否是远程推送而来的消息,本参数仅在iOS平台有效。
//当本参数为 true 时,message数据格式同本文概述部分讲述的api.addEventListener接口获取的value值
}
err:
{
code: , //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.addMessageListener({
name: 'receive'
}, function(ret) {
if (ret.messages) {
api.alert({msg:JSON.stringify(ret.messages)});
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
移除消息相关事件监听
removeMessageListener({params})
name:
var UIEasemob = api.require('UIEasemob');
UIEasemob.removeMessageListener({
name: 'receive'
});
iOS系统,Android系统
可提供的1.0.0及更高版本
开启关闭本地通知
开启本地通知后,app在后台运行时通过长连接收到消息时会弹出提示。此时用户点击提示后,iOS系统会启动app,开发者可在api.addEventListener接口获取消息内容,详情参考概述。
setLocalNotification({params})
enable:
title:
var UIEasemob = api.require('UIEasemob');
UIEasemob.setLocalNotification({
enable: true,
title: '您有一条新的消息'
});
iOS系统
可提供的 1.0.0及更高版本
设置推送全局属性
setPushOption({params},callback(ret))
displayName:
displayStyle:
noDisturbStatus:
noDisturbingStartH:
noDisturbingEndH:
ret:
{
status: true //布尔类型;是否设置成功,true|false
}
err:
{
code: 1, //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.setPushOption({
displayName: '',
displayStyle: '',
noDisturbStatus:'',
noDisturbingStartH:,
noDisturbingEndH:
},function(ret, err) {
if (ret.status) {
api.alert({ msg:'设置'});
} else {
api.alert({ msg:JSON.stringify(err)});
}
});
iOS系统
可提供的 1.0.0及更高版本
设置推送昵称
setApnsNickname({params},callback(ret))
nickname:
ret:
{
status: true //布尔类型;是否设置成功,true|false
}
err:
{
code: 1, //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.setApnsNickname({
nickName: ''
},function(ret, err) {
if (ret.status) {
api.alert({ msg:'设置'});
} else {
api.alert({ msg:JSON.stringify(err)});
}
});
iOS系统
可提供的 1.0.0及更高版本
设置群组忽略推送
ignoreGroupPush({params},callback(ret))
groupId:
ret:
{
status: true //布尔类型;是否设置成功,true|false
}
err:
{
code: 1, //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.ignoreGroupPush({
groupId: ''
},function(ret, err) {
if (ret.status) {
api.alert({ msg:'设置'});
} else {
api.alert({ msg:JSON.stringify(err)});
}
});
iOS系统
可提供的 1.0.0及更高版本
批量设置忽略推送的群组
ignoreGroupsPush({params},callback(ret))
groupIds:
ret:
{
status: true //布尔类型;是否设置成功,true|false
}
err:
{
code: 1, //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.ignoreGroupsPush({
groupIds: ['','']
},function(ret, err) {
if (ret.status) {
api.alert({ msg:'设置'});
} else {
api.alert({ msg:JSON.stringify(err)});
}
});
iOS系统
可提供的 1.0.0及更高版本
获取忽略推送消息的群组id
getAllIgnoredGroupIds(callback(ret))
ret:
{
status: true //布尔类型;是否获取成功,true|false
ignoredGroupIds:[] //数组类型;获取的群组id组成的数组
}
err:
{
code: 1, //数字类型;错误码
msg: '' //字符串类型;错误信息
}
var UIEasemob = api.require('UIEasemob');
UIEasemob.getAllIgnoredGroupIds(function(ret, err) {
if (ret.status) {
api.alert({ msg:'设置'});
} else {
api.alert({ msg:JSON.stringify(err)});
}
});
iOS系统
可提供的 1.0.0及更高版本
{
conversationId: '', //字符串类型;会话 ID
unreadMessagesCount: , //数字类型;会话未读消息数量
ext: {}, //JSON 对象;会话扩展属性
type: '', //字符串类型;会话类型,取值范围如下:
//chat:单聊会话
//groupChat:群聊会话
//chatRoom:聊天室会话
latestMessage: {} //JSON 对象;会话最新一条消息,详情参考附录:消息内容
}
{
messageId: '', //字符串类型;本条消息的 ID
conversationId: , //字符串类型;本条消息所在会话的会话 ID
direction: '', //字符串类型;消息的方向,取值范围如下:
//send:发送的消息
//receive:接收的消息
from: '', //字符串类型;消息的发送方
to: '', //字符串类型;消息的接收方
timestamp: , //数字类型;时间戳,服务器收到此消息的时间
localTime: , //数字类型;客户端发送/收到此消息的时间
chatType: '', //字符串类型;本条消息的类型,取值范围如下:
//chat:单聊会话
//groupChat:群聊会话
//chatRoom:聊天室会话
status: '', //字符串类型:消息的状态,取值范围如下:
//pending:发送未开始
//delivering:正在发送
//successed:发送成功
//failed:发送失败
isReadAcked: , //布尔类型;已读回执是否已发送/收到, 对于发送方表示是否已经收到已读回执,对于接收方表示是否已经发送已读回执
isDeliverAcked: , //布尔类型;送达回执是否已发送/收到,对于发送方表示是否已经收到送达回执,对于接收方表示是否已经发送送达回执,如果EMOptions设置了enableDeliveryAck,SDK收到消息后会自动发送送达回执
isRead: , //布尔类型;是否已读
ext: {}, //JSON 对象;消息扩展,Key值类型必须是NSString, Value值类型必须是NSString或者 NSNumber类型的 BOOL, int, unsigned in, long long, double
body: {} //JSON 对象;消息体(消息包含的内容),,详情参考附录:消息体内容
}
{
type: '', //字符串类型;消息体的类型,取值范围如下:
//text:文本类型
//image:图片类型
//video:视频类型
//location:位置类型
//voice:语音类型
//file:文件类型
//cmd:命令类型
...: ... //消息体除type外的其它内容,详情参考附录:消息体-文本、图片、视频、位置、语音、文件、命令
}
{
type: 'text',
text: '' //字符串类型;文本内容
}
{
type: 'image',
displayName: '', //字符串类型;附件的显示名
localPath: '', //字符串类型;附件的本地路径
remotePath: '', //字符串类型;附件在服务器上的路径
secretKey: '', //字符串类型;附件的密钥, 下载附件时需要密匙做校验
fileLength: , //数字类型;附件的大小, 以字节为单位
downloadStatus: '', //字符串类型;附件的下载状态,取值范围如下:
//downloading:正在下载
//successed:下载成功
//failed:下载失败
//pending:准备下载
thumbnailDownloadStatus: '',//字符串类型;缩略图下载状态,取值范围如下:
//downloading:正在下载
//successed:下载成功
//failed:下载失败
//pending:准备下载
size: { // JSON 对象;图片大小
width: , //数字类型;图片的宽
height: //数字类型;图片的高
},
compressionRatio: , //数字类型;设置发送图片消息时的压缩率,1.0时不压缩,默认值是0.6,如果设置了小于等于0的值,则使用默认值
thumbnailDisplayName: '', //字符串类型;缩略图的显示名
thumbnailLocalPath: '', //字符串类型;缩略图的本地路径
thumbnailRemotePath: '', //字符串类型;缩略图在服务器的路径
thumbnailSecretKey: '', //字符串类型;缩略图的密钥, 下载缩略图时需要密匙做校验
thumbnailSize: { // JSON 对象;缩略图片大小
width: , //数字类型;图片的宽
height: //数字类型;图片的高
},
thumbnailFileLength: //数字类型;缩略图文件的大小, 以字节为单位
}
{
type: 'video',
duration: '', //数字类型;视频时长, 秒为单位
displayName: '', //字符串类型;附件的显示名
localPath: '', //字符串类型;附件的本地路径
remotePath: '', //字符串类型;附件在服务器上的路径
secretKey: '', //字符串类型;附件的密钥, 下载附件时需要密匙做校验
fileLength: , //数字类型;附件的大小, 以字节为单位
downloadStatus: '', //字符串类型;附件的下载状态,取值范围如下:
//downloading:正在下载
//successed:下载成功
//failed:下载失败
//pending:准备下载
thumbnailLocalPath: '', //字符串类型;缩略图的本地路径
thumbnailRemotePath: '', //字符串类型;缩略图在服务器的路径
thumbnailSecretKey: '', //字符串类型;缩略图的密钥, 下载缩略图时需要密匙做校验
thumbnailSize: { // JSON 对象;缩略图片大小
width: , //数字类型;图片的宽
height: //数字类型;图片的高
},
thumbnailDownloadStatus: '',//字符串类型;缩略图下载状态,取值范围如下:
//downloading:正在下载
//successed:下载成功
//failed:下载失败
//pending:准备下载
}
{
type: 'location',
address: '', //字符串类型;地址信息
latitude: , //数字类型;纬度
longitude: //数字类型;经度
}
{
type: 'voice',
duration: '', //数字类型;语音时长, 秒为单位
displayName: '', //字符串类型;附件的显示名
localPath: '', //字符串类型;附件的本地路径
remotePath: '', //字符串类型;附件在服务器上的路径
secretKey: '', //字符串类型;附件的密钥, 下载附件时需要密匙做校验
fileLength: , //数字类型;附件的大小, 以字节为单位
downloadStatus: '' //字符串类型;附件的下载状态,取值范围如下:
//downloading:正在下载
//successed:下载成功
//failed:下载失败
//pending:准备下载
}
{
type: 'file',
displayName: '', //字符串类型;附件的显示名
localPath: '', //字符串类型;附件的本地路径
remotePath: '', //字符串类型;附件在服务器上的路径
secretKey: '', //字符串类型;附件的密钥, 下载附件时需要密匙做校验
fileLength: , //数字类型;附件的大小, 以字节为单位
downloadStatus: '' //字符串类型;附件的下载状态,取值范围如下:
//downloading:正在下载
//successed:下载成功
//failed:下载失败
//pending:准备下载
}
{
type: 'cmd',
action: '', //字符串类型;命令内容
}
为帮助用户更好更快的使用插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。