- 1、简介
- 2、API概览
- 3、附录
- 4、更新历史
环信插件
本文的目的是为了开发能够更好更快地将API集成到自己的项目中,在使用前最好先使用好我们提供的demo并对照文档运行看看效果。
这里可以【参考教程】下载AppCan IDE为开发者工具开发,然后集成到自己的项目上。
1.1、 说明
本插件是基于环信API封装的AppCan平台的插件模块,用户可以使用本插件实现基本的即时通讯功能,包括——
单聊功能:
支持发送语音,图片,表情,文字,位置,附件;
群聊功能:
支持500人到2000人大群,拥有完善的群组权限管理;
实时语音:
基于IP网络的点对点实时语音,适应低带宽要求;
客服功能
(iOS 3.0.22, Android 3.0.23及以上支持):基于新一代移动互联网技术的全媒体智能客户关系中心系统,详情见环信移动客服文档
支持华为推送功能;
查看使用说明
使用前说明:
本插件为单例插件 ——
- 在任何网页调用本插件,调用的是同一个插件实例;
- 所有的API都是异步方法,不会直接返回值;
- 所有的回调都会传到"root页面"(config.xml中配置的App起始页面即为root页面)
以上内容非常重要
root页面收到回调后,可以通过uexWindow的相关方法传递到各个网页去,
以下方法是您可能要用到的——
传递给某个窗口
uexWindow.evaluateScript;
uexWindow.evaluatePopoverScript
uexWindow.evaluateMultiPopoverScript
传递给某些窗口:
uexWindow.publishChannelNotification
uexWindow.subscribeChannelNotification
这些方法具体用法在uexWindow文档 内有描述,当然,也可下载Demo 参考Demo内的调用.
1.2、 UI展示
暂无
1.3、 开源源码
插件测试用例与自定义插件下载:点击此处(插件测试用例与插件源码已经提供)
1.4、 术语表
Path Types
协议头 |
Android对应路径 (其中"/sdcard/"等 同于"/storage/emulated/0/") |
iOS对应路径 |
res:// |
widget/wgtRes/ |
widget/wgtRes |
wgts:// |
/storage/emulated/0/widgetone/apps/ xxx(widgetAppId)/ |
/Documents/apps/xxx(widgetAppId)/ |
wgts:// |
/storage/emulated/0/widgetone/widgets/ |
/Documents/widgets/ |
file:///sdcard/ |
/storage/emulated/0/ |
无 |
1.5、平台版本支持
本插件的所有API默认支持Android4.0+和iOS7.0+操作系统.
有特殊版本要求的API会在文档中额外说明.
1.6、接口有效性
本插件所有API默认在插件版本4.0.0+可用.
在后续版本中新添加的接口会在文档中额外说明.
1.7、 接入小米推送(环信目前已经不支持)
正常情况下应用在小米手机上被杀之后是无法收到消息的,现在可以通过接入小米推送来收消息,步骤如下:
• 进入小米推送的后台,创建一个应用,完成后得到 AppID、AppKey、AppSecret。然后,登录环信管理后台,选择你的应用—>选择推送证书—>Xiaomi—>新增证书。
证书名称为刚从小米推送后台拿到的 AppID,证书密钥为 AppSecret,以及填上你当前应用的包名,点击上传即可。
• 打包勾选小米推送
• uexEasemob.initEasemob
增加参数miPushAppId
miPushAppKey
• config.xml
添加配置(以下配置只用更改“此处填写你的包名“为你的包名,其他不要更改)
<config desc="uexMiPush" type="KEY">
<param name="$packageName$" platform="Android" value="此处填写你的包名"/>
</config>
<config desc="uexMiPush" type="KEY">
<param name="org.zywx.wbpalmstar.plugin.uexmipush.MiBroadcastReceiver" platform="Android" value="com.hyphenate.chat.EMMipushReceiver"/>
</config>
1.8、接入华为推送
正常情况下应用在华为手机上被杀之后是无法收到消息的,现在可以通过接入华为推送来收消息,步骤如下:
• 进入华为开发者后台,创建一个应用,完成后配置push权益。创建完成后,会自动生成的APP ID及APP SECRET,进入环信管理后台,选择你的应用—>选择推送证书—>Huawei—>新增证书。
证书名称为刚从华为后台拿到的 APP ID,证书密钥为 APP SECRET,点击上传即可。
• 打包勾选华为推送(特别说明:如果应用有百度地图的插件,需要使用华为推送无百度地图版本的,否则会打包失败)
• uexEasemob.initEasemob
增加参数huaweiPushAppId
• config.xml
添加配置
<config desc="uexHuaweiPush" type="KEY">
<param name="org.zywx.wbpalmstar.plugin.uexhuaweipush.MyReceiver" platform="Android" value="com.hyphenate.chat.EMHuaweiPushReceiver"/>
</config>
• 所有发送消息的接口都添加了ignoreNotification
(bool类型,发送静默消息)、forceNotification
(bool类型,发送强制推送)、pushTitle
(String类型,自定义推送的标题)对应于http://docs.easemob.com/im/200androidclientintegration/115thirdpartypush 三种华为推送类型。
2、API概述
2.1、Initialization
initEasemob(param,function(data){}) //初始化
说明:
初始化环信SDK
- 调用环信其他任意接口前必须先保证已调用此方法
- 在整个应用生命周期中,此方法只需调用一次即可
param为json字符串
var param{
appKey:,//区别app的标识
apnsCertName:,//iOS中推送证书名称(仅iOS)
isAutoLoginEnabled:,//可选参数 是否开启自动登录功能 1-开启 2-关闭
isAutoAcceptGroupInvitation:,//可选参数 是否开启用户自动同意群邀请, 1-开启 2-关闭 默认为开启(此参数为3.0.22后新加入)
miPushAppId:,//String类型 可选 小米推送的appId
miPushAppKey:,//String类型 可选 小米推送的appKey
huaweiPushAppId:,//String类型 可选 华为推送的appId//仅支持android
};
* apnsCertName不传时,无法使用环信的APNs推送功能
* 注:接入小米安卓推送时,由于环信目前已经不支持,此功能暂废弃,可以接入
华为推送。
data为json字符串
var data = "EaseMobSDK initialized successfully!" 或 "EaseMobSDK has already been initialized!"
*注:自动登录功能Android SDK 默认开启,iOS SDK默认关闭.
registerCallback //注册回调
uexEasemob.registerCallback()
说明
- 调用了改接口的页面都会受到回调,页面关闭时,请取消掉
- 请尽量少的在页面调用该接口,会影响效率
- Root页面默认自动调用了此接口
unRegisterCallback //取消该页面的监听
uexEasemob.unRegisterCallback()
说明
取消该页面的监听
如果要取消所有页面的监听,请调用uexEasemob.unRegisterCallback(-1)
login(param,function(data){}) //登录
param为json字符串
var param = {
username:,//用户名
password:,//密码
};
data为json对象
var data = {
result:,//1-成功,2-失败
msg:,//提示信息
};
logout(function(data){}) //退出登录
data为json对象
var data = {
result:,//1-登出成功,2-登出失败
message:,//提示信息
};
registerUser(param,function(data){}) //注册
param为json字符串
var param = {
username:,//用户名
password:,//密码
};
data为json对象
var data = {
result:,//1-成功,2-失败
msg:,//提示信息
};
updateCurrentUserNickname(param) //更新当前用户的昵称
param为json字符串
var param = {
nickname:,
};
注:此方法主要为了在苹果推送时能够推送昵称(nickname)而不是userid,一般可以在登陆成功后从自己服务器获取到个人信息,然后拿到nick更新到环信服务器.并且,在个人信息中如果更改个人的昵称,也要把环信服务器更新下nickname 防止显示差异.
getLoginInfo(function(data){}) //获取当前登陆信息(仅iOS可用)
data为json对象
var data ={
userInfo://当前登陆用户信息
isLoggedIn://当前是否已有登录用户 1-是 2-否
isConnected://是否连上聊天服务器 1-是 2-否
isAutoLoginEnabled://是否自动登录 1-是 2-否
};
onConnected(); //已连接上
onDisconnected(param) //链接断开
param为json字符串
var param = {
error:,//1-账号被移除,2-账号其他设备登陆,3-连接不到聊天服务器,4-当前网络不可用
};
2.2、Message
onNewMessage(param) //收到新消息监听
注:param为EMMessage的json格式对象
EMMessage具体结构见文末附录
所有离线和在线时接受到的的非透传消息,都通过此回调传递
onCmdMessageReceive(param) //透传消息监听
param为json字符串
var param = {
msgId:,
message:,//EMMessage 对象json格式
action:,
};
onAckMessage(param) //消息已读监听
param为json字符串
var param = {
msgId:,//消息ID
username:,//来源
};
onDeliveryMessage(param) //消息送达监听
param为json字符串
var param = {
msgId:,//消息ID
username:,//来源
};
sendText(param) //发送文本消息及表情
说明:
增加了环信移动客服功能,详情见环信移动客服文档
param为json字符串
var param = {
username:,//单聊时聊天人的userid或者群聊时groupid
chatType:,//0-单聊,1-群聊
content:,//文本内容
ext:,//扩展属性(可选参数,String)
extObj:,//扩展参数(iOS 3.0.22, Android 3.0.23新增可选参数,JSONString extObj存在时ext无效).用于环信移动客服功能,详情见[环信移动客服文档]
};
sendFile(param) //发送文件
说明:
增加了环信移动客服功能,详情见环信移动客服文档
param为json字符串
var param = {
username:,//单聊时聊天人的userid或者群聊时groupid
chatType:,//0-单聊,1-群聊
filePath:,//文件路径
displayName:,//对方接收时显示的文件名(仅iOS需要)
ext:,//扩展属性(可选参数,String)
extObj:,//扩展参数(iOS 3.0.22, Android 3.0.23新增可选参数,JSONString extObj存在时ext无效).用于环信移动客服功能,详情见[环信移动客服文档]
};
sendPicture(param) //发送图片
说明:
增加了环信移动客服功能,详情见环信移动客服文档
param为json字符串
var param = {
username:,//单聊时聊天人的userid或者群聊时groupid
chatType:,//0-单聊,1-群聊
filePath:,//图片文件路径
displayName:,//对方接收时显示的文件名(仅iOS需要)
ext:,//扩展属性(可选参数,String)
extObj:,//扩展参数(iOS 3.0.22, Android 3.0.23新增可选参数,JSONString extObj存在时ext无效).用于环信移动客服功能,详情见[环信移动客服文档]
};
sendLocationMsg(param) //发送地理位置信息
说明:
增加了环信移动客服功能,详情见环信移动客服文档
param为json字符串
var param = {
username:,//单聊时聊天人的userid或者群聊时groupid
chatType:,//0-单聊,1-群聊
locationAddress:,//地理位置信息
latitude:,
longitude:,
ext:,//扩展属性(可选参数,String)
extObj:,//扩展参数(iOS 3.0.22, Android 3.0.23新增可选参数,JSONString extObj存在时ext无效).用于环信移动客服功能,详情见[环信移动客服文档]
};
sendVoice(param) //发送语音
说明:
增加了环信移动客服功能,详情见环信移动客服文档
param为json字符串
var param = {
username:,//单聊时聊天人的userid或者群聊时groupid
chatType:,//0-单聊,1-群聊
filePath:,//语音文件路径
length:,//长度(Android必选,iOS可选)
displayName://对方接收时显示的文件名(仅iOS需要)
ext:,//扩展属性(可选参数,String)
extObj:,//扩展参数(iOS 3.0.22, Android 3.0.23新增可选参数,JSONString extObj存在时ext无效).用于环信移动客服功能,详情见[环信移动客服文档]
};
sendVideo(param) //发送视频
说明:
增加了环信移动客服功能,详情见环信移动客服文档
param为json字符串
var param = {
username:,//单聊时聊天人的userid或者群聊时groupid
chatType:,//0-单聊,1-群聊
filePath:,//视频文件路径
length:,//长度(Android必选,iOS可选)
displayName://对方接收时显示的文件名(仅iOS需要)
ext:,//扩展属性(可选参数,String)
extObj:,//扩展参数(iOS 3.0.22, Android 3.0.23新增可选参数,JSONString extObj存在时ext无效).用于环信移动客服功能,详情见[环信移动客服文档]
};
sendCmdMessage(param) //发送透传消息
说明:
增加了环信移动客服功能,详情见环信移动客服文档
param为json字符串
var param = {
chatType:,//0-单聊,1-群聊
action:,//
toUsername:,//
ext:,//扩展属性(可选参数,String)
extObj:,//扩展参数(iOS 3.0.22, Android 3.0.23新增可选参数,JSONString extObj存在时ext无效).用于环信移动客服功能,详情见[环信移动客服文档]
};
setNotifyBySoundAndVibrate(param) //消息提醒相关配置
param为json字符串
var param = {
enable:,//0-关闭,1-开启.默认为1 开启新消息提醒
soundEnable:,// 0-关闭,1-开启.默认为1 开启声音提醒
vibrateEnable:,// 0-关闭,1-开启.默认为1 开启震动提醒
userSpeaker:,// 0-关闭,1-开启.默认为1 开启扬声器播放(仅Android可用)
showNotificationInBackgroud:// 0-关闭,1-开启.默认为1.设置后台接收新消息时是否通过通知栏提示(此参数在android环信SDK3.0后已不支持,对应插件版本3.0.22;iOS不完全支持,详见下方说明*)
acceptInvitationAlways:,// 0-关闭,1-开启.默认添加好友时为1,是不需要验证的,改成需要验证为0(仅Android可用)
deliveryNotification:,// 0-关闭 1-开启 默认为1 开启消息送达通知 (仅iOS可用)
};
- 受iOS后台机制所限,当应用在后台持续一段时间后,环信服务器与App的连接将会断开,此时showNotificationInBackgroud参数无效,需要走APNs通道才能收到新消息以及弹出提示通知.
getMessageById(param,function(data){}) //根据id获取消息记录
param为json字符串
var param = {
msgId:,//消息ID
};
data为json对象
var data = {
msg:,// EMMessage的json格式对象
};
param为json字符串
var param ={
msgId:,//消息Id
};
onMessageSent(param) //消息已发送监听
param为json字符串
var param ={
isSuccess:,//消息是否发生成功 true/false
errorStr:,//发送失败的原因 当isSuccess为false时才有此项
message:,//被发送的消息 EMMessage结构的json
};
- 所有send开头的发送消息的API均会触发此监听
- 此监听仅表示消息是否成功发送至环信服务器,不能以此判断接收人是否收到消息
2.3、Conversation
getConversationByName(param,function(data){}) //根据用户名获取conversation对象
param为json字符串
var param = {
username:,
chatType:,//聊天类别 0 - 个人 1 - 群组(仅iOS需要,默认0)
}
data为json对象
var data = {
conversation:,// EMConversation的json格式对象,格式见附录
};
getMessageHistory(param,function(data){}) //获取聊天记录
param为json字符串
var param = {
username:,//单聊时聊天人的userName或者群聊时groupid
chatType:,//0-单聊,1-群聊
startMsgId:,//获取startMsgId之前的pagesize条消息
pagesize:,//分页大小,为0时获取所有消息(iOS在3.0.21后不支持获取所有消息),startMsgId可不传
};
data为json对象
var data = {
messages:,//List<EMMessage>的json格式对象
};
getUnreadMsgCount(param,function(data){}) //获取未读消息数量
param为json字符串
var param = {
username:,//username | groupid
chatType:,//聊天类别 0-单聊 1-群聊(仅iOS需要,默认0)
};
data为json对象
var data = {
count:,//未读消息数
};
resetUnreadMsgCount(param) //指定会话未读消息数清零
param为json字符串
var param = {
username:,//username | groupid
chatType:,//聊天类别 0-单聊 1-群聊(仅iOS需要,默认0)
};
resetAllUnreadMsgCount() //所有未读消息数清零(仅Android可用)
getMsgCount(param,function(data){}) //获取消息总数(仅Android可用)
param为json字符串
var param = {
username:,//username | groupid
};
data为json对象
var data = {
msgCount:,//消息总数
};
clearConversation(param) //清空会话聊天记录(仅Android可用)
param为json字符串
var param = {
username:,//username | groupid
};
deleteConversation(param) //删除所有会话记录(包括本地)
param为json字符串
var param = {
username:,//username | gr oupid
chatType:,//0-个人 1-群组(默认0,此参数仅iOS需要)
};
removeMessage(param) //删除和某个user的整个的聊天记录(包括本地)
param为json字符串
var param = {
username:,//username | groupid
msgId:,
chatType:,//0-个人 1-群组(默认0,此参数仅iOS需要)
};
deleteAllConversation() //删除当前会话的某条聊天记录
删除所有会话记录(包括本地)
getChatterInfo(function(data){}) //获取聊天对象信息
获取聊天对象信息
data为list,一个由EMChatterInfo结构组成的数组.
- 包含所有好友和群组的聊天对象信息
- EMChatterInfo结构说明见附录
getTotalUnreadMsgCount(function(data){}); //获取总计未读消息数
data为json对象
var data ={
count:,//总计未读消息数
};
getRecentChatters(function(data){}); //获取近期聊天对象信息
data为list,一个由EMChatterInfo结构组成的数组.
- 仅包含有聊天记录的聊天对象(包括非好友)
- param已按lastMsg的时间戳排序,最后接收消息的时间越新,排序越靠前
- EMChatterInfo结构说明见附录
2.4、Friend
param为json字符串
var param = {
userNameList:,//json格式的List<String>
};
param为json字符串
var param = {
userNameList:,//json格式的List<String>
};
param为json字符串
var param = {
username:,//
reason:,//
};
param为json字符串
var param = {
username:,//
};
param为json字符串
var param = {
username:,//
};
data为json对象
var data = {
usernames:,//用户姓名字符串构成的数组
};
param为json字符串
var param = {
toAddUsername:,//要添加的好友
reason:
};
param为json字符串
var param = {
username:,//
};
acceptInvitation(param) //同意username的好友请求
param为json字符串
var param = {
username:,//
};
refuseInvitation(param) //拒绝username的好友请求
param为json字符串
var param = {
username:,//
reason:,//拒绝好友请求原因(仅iOS需要)
};
getBlackListUsernames(function(data){}) //获取黑名单列表
data为json对象
var data = {
usernames:,//List<String> json格式
};
addUserToBlackList(param) //把用户加入到黑名单
param为json字符串
var param = {
username:,//
};
deleteUserFromBlackList(param) //把用户从黑名单中移除
param为json字符串
var param = {
username:,//
};
2.5、Group
onInvitationDeclined(param) //群聊邀请被拒绝
param为json字符串
var param = {
groupId:,
invitee:,
reason:,
};
onInvitationAccpted(param) //群聊邀请被同意
param为json字符串
var param = {
groupId:,
inviter:,
reason:,
};
onUserRemoved(param) //当前用户被管理员移除出群聊
param为json字符串
var param = {
groupId:,
groupName:,
};
onGroupDestroy(param) //群聊被创建者解散
param为json字符串
var param = {
groupId:,
groupName:,
};
onApplicationReceived(param) //用户申请加入群聊,收到加群申请
param为json字符串
var param = {
groupId:,
groupName:,
applyer:,
reason:,
};
onApplicationAccept(param) //加群申请被同意
param为json字符串
var param = {
groupId:,
groupName:,
accepter:,
};
onApplicationDeclined(param) //加群申请被拒绝
param为json字符串
var param = {
groupId:,//(仅Android)
groupName:,
decliner:,
reason:,
};
createPrivateGroup(param) //创建私有群
param为json字符串
var param = {
groupName:,//要创建的群聊的名称
desc://群聊简介
members://群聊成员,为空时这个创建的群组只包含自己
allowInvite://是否允许群成员邀请人进群
maxUsers://最大群聊用户数,可选参数,默认为200,最大为2000
initialWelcomeMessage://群组创建时发送给每个初始成员的欢迎信息
};
createPublicGroup(param) //创建公开群
param为json字符串
var param = {
groupName:,//要创建的群聊的名称
desc://群聊简介
members://群聊成员,为空时这个创建的群组只包含自己
needApprovalRequired://如果创建的公开群用需要户自由加入,就传false.否则需要申请,等群主批准后才能加入,传true
maxUsers://最大群聊用户数,可选参数,默认为200,最大为2000
initialWelcomeMessage://群组创建时发送给每个初始成员的欢迎信息
};
onGroupCreated(param) //群组建立监听
param为json字符串
var param = {
isSuccess:,//群组是否创建成功 true/false
errorStr:,//创建失败的原因 仅isSuccess传false时会有此参数
group:,//EMGroup的json字符串,被建立的群组信息
};
addUsersToGroup(param) //群聊加人
param为json字符串
var param = {
isGroupOwner:,//是否群主(仅Android需要)
groupId://
newmembers://群聊新成员,List<String> Json格式
inviteMessage:// 新增参数 邀请信息
};
removeUserFromGroup(param) //群聊减人
param为json字符串
var param = {
groupId://
username://
};
只有owner才有权限进行此操作
joinGroup(param) //加入某个群聊,只能用于加入公开群
param为json字符串
var param = {
groupId://
reason:// //如果群开群是自由加入的,即group.isMembersOnly()为false,此参数不传
groupName://群组名称
};
exitFromGroup(param) //退出群聊
param为json字符串
var param = {
groupId://
};
exitAndDeleteGroup(param) //解散群聊
param为json字符串
var param = {
groupId://
};
getGroupsFromServer(param,function(data){}) //从服务器获取自己加入的和创建的群聊列表
param为json字符串
var param = {
loadCache://是否从本地加载缓存,(默认为false,从网络获取)
};
data为json对象
var data = {
result://0-成功,1-失败
grouplist://List<EMGroup> json格式
errorMsg:
};
getAllPublicGroupsFromServer(param,function(data){}) //获取所有公开群列表
param为json字符串
var param = {
pageSize://期望结果的数量, 如果 < 0 则一次返回所有结果
cursor://获取公开群的cursor,首次调用传空即可
};
data为json对象
var data = {
result://0-成功,1-失败
grouplist:List< EMGroup> json格式 见附录
errorMsg:
cursor:,//
};
getGroup(param,function(data){}) //获取群详情
param为json字符串
var param = {
groupId:,//
loadCache://是否从本地加载缓存,(默认为false,从网络获取)
};
data为json对象
var data = {
//EMGroup 对象json格式
};
blockGroupMessage(param) //屏蔽群消息
param为json字符串
var param = {
groupId://
};
unblockGroupMessage(param) //解除屏蔽群
param为json字符串
var param = {
groupId://
};
changeGroupName(param) //修改群组名称
param为json字符串
var param = {
groupId://
changedGroupName:,//改变后的群组名称
};
blockUser(param) //将群成员拉入群组的黑名单(iOS 3.0.22后支持)
param为json字符串
var param = {
groupId:,//
username://待屏蔽的用户名
};
unblockUser(param) //将拉入黑名单的群成员移除(iOS 3.0.22后支持)
param为json字符串
var param = {
groupId:,//
username://待解除屏蔽的 用户名
};
getBlockedUsers(param,function(data){}) //获取群组的黑名单用户列表(iOS 3.0.22后支持)
param为json字符串
var param = {
groupId:,//
};
data为json对象
var data = {
usernames:,// List<String> json格式
};
onGroupUpdateInfo(param) //群组信息更新的监听(仅iOS)
param为json字符串
var param={
group:,//EMGroup对象的json格式字符串
};
- 每当添加/移除/更改角色/更改主题/更改群组信息之后,都会触发此回调
**
onDidJoinedGroup(param) //自动加入群组监听(3.0.22新增接口)
SDK自动同意了用户A的加B入群邀请后,用户B接收到该回调,需要initEasemob时设置isAutoAcceptGroupInvitation为TRUE
param为json字符串
var param = {
groupId:,
groupName:,
username:,//邀请者
message:,//邀请消息
};
onReceiveGroupInvitation(param) //收到群组邀请监听(iOS 3.0.22, Android 3.0.23新增接口)
用户A邀请用户B入群,用户B接收到该回调
param为json字符串
var param = {
groupId:,
username:,//邀请者
message:,//邀请消息
};
acceptJoinApplication(param) //批准入群申请, 需要Owner权限(iOS 3.0.22, Android 3.0.23新增接口)
param为json字符串
var param={
groupId:,//所申请的群组ID
username:,//申请人
};
declineJoinApplication(param) //拒绝入群申请, 需要Owner权限(iOS 3.0.22, Android 3.0.23新增接口)
param为json字符串
var param={
groupId:,//所申请的群组ID
username:,//申请人
reason:,//拒绝理由
};
acceptInvitationFromGroup(param) //接受入群邀请(iOS 3.0.22, Android 3.0.23新增接口)
param为json字符串
var param={
groupId:,//所申请的群组ID
username:,//邀请者
};
declineInvitationFromGroup(param) //拒绝入群邀请(iOS 3.0.22, Android 3.0.23新增接口)
param为json字符串
var param={
groupId:,//所申请的群组ID
username:,//邀请者
reason:,//拒绝理由
};
2.6、Call
onCallReceive(param) //实时语音监听
param为json字符串
var param = {
from;//拨打方username
callType;//0-语音电话 1-视频电话
callId;//本次通话的EMSessionId
};
onCallStateChanged(param) //通话状态监听
param为json字符串
var param = {
state:,//1-正在连接对方,2-双方已经建立连接,3-同意语音申请,建立语音通话中,4-连接中断 5-电话暂停中 6-电话等待对方同意接听 7-通话中
};
eg. 一个成功的语音通话流程为 :A发送通话请求给B ==> AB建立语音通话连接 ==> B同意语音通话 ==> 开始语音通话
makeVoiceCall(param) //拨打语音通话
param为json字符串
var param = {
username:,//
};
answerCall(); //接听通话
rejectCall(); //重新通话
endCall(); //挂断通话
2.7、Apns(以下方法全部仅限iOS)
registerRemoteNotification(function(data){}) //注册Apns推送
data为json对象
var data = {
result;//1-成功 2-失败
errorInfo;//注册失败时的错误信息
};
onApnsLaunch(param); //若APP是通过点击apns推送调起的,当插件初始化时会触发此回调
若APP是通过点击apns推送调起的,当插件初始化时会触发此回调.
param为此条推送的内容,json格式.
updatePushOptions(param,function(data){}) //设置apns全局属性
param为json字符串
var param = {
nickname;//昵称
displayStyle;//推送显示类型 0-提示"您有一条新消息" 1- 显示详细消息内容
noDisturbingStyle;//是否开启免打扰模式 0-全天免打扰 1-自定义时段免打扰 2- 关闭免打扰
noDisturbingStartH;//免打扰模式开始时间 小时(int)
noDisturbingEndH;//免打扰模式结束时间 小时(int)
};
data为json对象
var data = {
nickname;//昵称
displayStyle;//推送显示类型 0-提示"您有一条新消息" 1- 显示详细消息内容
noDisturbingStyle;//是否开启免打扰模式 0-全天免打扰 1-自定义时段免打扰 2- 关闭免打扰
noDisturbingStartH;//免打扰模式开始时间 小时(int)
noDisturbingEndH;//免打扰模式结束时间 小时(int)
};
说明:updatePushOptions全为可选参数,当传入空值时,即可通过回调获得当前apns全局属性
ignoreGroupPushNotification(param,function(data){}) //设置指定群组是否接收
param为json字符串
var param = {
groupId;//指定的群组Id
isIgnore;//1-屏蔽 2-取消屏蔽
};
data为json对象
var data = {
groupIds;//已屏蔽接收推送消息的群列表
};
3、附录
EMMessage json
key |
说明 |
from |
发送者 |
to |
接受者 |
messageId |
消息id |
messageTime |
消息发送或接收的时间 |
isAcked |
是否接收到了接收方的阅读回执, 或是否已发送了阅读回执给对方 |
isDelivered |
对于发送方来说, 该值表示:接收方是否已收到了消息, 对于接收方来说, 表示:接收方是否已发送了"已接收回执" 给对方 |
isRead |
是否已读 |
chatType: |
聊天类别 0-个人 1-群组 |
messageType |
消息类型 text/video/audio/image/location/file/cmd |
ext |
扩展属性 String格式 |
extObj |
扩展属性(iOS 3.0.22, Android 3.0.23新增,JSONString 用于环信移动客服功能,详情见环信移动客服文档 |
messageBody |
消息主体json |
messageBody的结构为
普通文本消息
透传消息
位置消息
key |
说明 |
longitude |
经度 |
latitude |
纬度 |
address |
地理位置信息 |
视频/语音/图片/文件消息
key |
说明 |
displayName |
显示名 |
remotePath |
服务器远程文件路径 |
secretKey |
远端文件的密钥 |
length |
长度 (单位:秒 仅语音/视频消息) |
thumbnailRemotePath |
预览图文件的服务器远程路径(仅视频/图片消息) |
thumbnailSecretKey |
预览图文件的密钥(仅视频/图片消息) |
- 返回的json数据中会包含除上述属性之外的一些其他信息,均可以忽略
- 由于
Android SDK
不能获取已发送消息
的remotePath
和thumbnailRemotePath
,因此改用本地文件路径
(file://开头)代替
EMConversation json
key |
说明 |
chatter |
conversation识别名 |
chatType |
聊天类别 0-个人 1-群组 |
messages |
"conversation所包含的message列表,表内元素为EMMessage的json字符串" |
- 返回的json数据中会包含除上述属性之外的一些其他信息,均可以忽略
EMGroup json
key |
说明 |
groupName |
群组名称 |
groupDescription |
群组描述 |
members |
包含的成员 |
owner |
群主 |
isPushNotificationEnable |
是否允许推送提醒 |
isBlock |
是否被用户屏蔽 |
groupMaxUserCount |
群组最大人数 |
groupId |
群组Id |
isPublic |
群组类型 |
allowInvites |
是否允许群成员邀请人进群 |
membersOnly |
需要申请和验证才能加入 |
- 返回的json数据中会包含除上述属性之外的一些其他信息,均可以忽略
- 受SDK所限,部分接口的members属性会有误
- 群组的members属性以cbGetGroup回调为准
Android的members包含群组的owner,而iOS并不包含
,此问题已反馈给环信官方,待解决中
EMChatterInfo json
key |
说明 |
chatter |
联系人的username或群组的groupId |
groupName |
群组名(仅群组有此值) |
chatType |
联系人类型 0-个人 1-群组 |
unreadMsgCount |
未读消息数 |
lastMsg |
最后一条消息 EMMessage格式的json字符串 |
"isGroup"参数废弃 改用"chatType"的相关说明
由于环信插件即将添加聊天室功能
,isGroup参数即将不能满足需求,因此做如下修改:
- 所有的调用API中,入参里的isGroup改为chatType
- 所有的回调API中,isGroup属性改为chatType
4、更新历史
iOS
API版本: uexEasemob-4.0.4
最近更新时间:2017-11-02
历史发布版本 |
更新内容 |
4.0.6 |
修改updatePushOptions返回数据 |
4.0.4 |
添加图片宽高字段 |
4.0.3 |
修复bugs |
4.0.2 |
SDK升级至3.2.3 |
4.0.1 |
更新sdk 支持ATS |
Android
API版本: uexEasemob-4.1.5
最近更新时间:2017-3-07
历史发布版本 |
更新内容 |
4.1.5 |
(依赖引擎4.1)修复getRecentChatters; |
4.1.4 |
兼容chatType传数字 |
4.1.3 |
.(依赖引擎4.1)支持华为推送 |
4.1.2 |
.(依赖引擎4.1)修复跨页面调用接口出错的问题 |
4.0.1 |
(依赖引擎4.1)更新SDK,修复若干bug |