mobileIM 封装了MobileIMSDK,MobileIMSDK是一套专为移动端开发的原创即时通讯框架:
初始化,android调用其他接口前需要先调用此接口,退出后再登陆前需要先调用此接口
initMobile({params})
appKey:
serverIp:
serverPort:
mode:
var mobileIM = api.require('mobileIM');
mobileIM.initMobile({
});
iOS系统,Android系统
可提供的1.0.0及更高版本
登陆
login({params}, callback(ret))
userId:
token:
extra:
ret:
{
code:0 //数字类型;结果,0表示成功,否则返回的是错误码
}
var mobileIM= api.require('mobileIM');
mobileIM.login({
},function(ret){
console.log(JSON.stringify(ret))
});
iOS系统,Android系统
可提供的1.0.0及更高版本
退出登陆
loginOut(callback(ret))
ret:
{
code:0 //数字类型;结果,0表示成功,否则返回的是错误码
}
var mobileIM= api.require('mobileIM');
mobileIM.loginOut(function(ret){
console.log(JSON.stringify(ret))
});
iOS系统,Android系统
可提供的1.0.0及更高版本
发送Keep Alive心跳包(仅iOS支持)
sendKeepAlive(callback(ret))
ret:
{
code:0 //数字类型;结果,0表示成功,否则返回的是错误码
}
var mobileIM= api.require('mobileIM');
mobileIM.sendKeepAlive(function(ret){
console.log(JSON.stringify(ret))
});
iOS系统
可提供的1.0.0及更高版本
发送通用数据方法
sendCommonData({params}, callback(ret))
content:
toUserId:
qos:
fp:
typeu:
ret:
{
code:0 //数字类型;结果,0表示成功,否则返回的是错误码
}
var mobileIM= api.require('mobileIM');
mobileIM.sendCommonData({
},function(ret){
console.log(JSON.stringify(ret))
});
iOS系统,Android系统
可提供的1.0.0及更高版本
获取指纹特征码,目前使用的UUID基本能保证全局唯一,但它有36位长(加上分隔符32+4),目前为了保持框架的算法可读性暂时不进行优化,以后可考虑使用2进制方式或者Protobuffer实现(仅iOS支持)
genFingerPrint(callback(ret))
ret:
{
fingerPrint:0 //数字类型;指纹特征码,指纹特征码实际上就是系统的当时时间戳
}
var mobileIM= api.require('mobileIM');
mobileIM.genFingerPrint(function(ret){
console.log(JSON.stringify(ret))
});
iOS系统
可提供的1.0.0及更高版本
账号事件的监听
addAccountListener(callback(ret))
ret:
{
eventType: 'onLogin', //字符串类型;监听的事件类型,取值范围如下:
//onLogin:登陆结果(仅iOS支持,android在login接口返回)
//onLinkClose:与服务端的通信断开,该消息只有在客户端连接服务器成功之后网络异常中断之时触发。导致与与服务端的通信断开的原因有(但不限于):无线网络信号不稳定、WiFi与2G/3G/4G等同开情况下的网络切换、手机系统的省电策略等
loginCode:0, //数字类型;服务端反馈的登录结果:0 表示登陆成功,否则为服务端自定义的出错代码(按照约定通常为>=1025的数)(仅iOS支持,android在login接口返回)
linkCloseCode:0 //数字类型;本回调参数表示表示连接断开的原因,目前错误码没有太多意义,仅作保留字段,目前通常为-1
}
var mobileIM = api.require('mobileIM');
mobileIM.addAccountListener(function(ret) {
console.log(JSON.stringify(ret))
});
iOS系统,Android系统
可提供的1.0.0及更高版本
消息事件的监听
addMessageListener(callback(ret))
ret:
{
eventType: '', //字符串类型;监听的事件类型,取值范围如下:
//onTransBuffer:收到普通消息
//onError:服务端反馈的出错信息
//messagesLost:消息未送达
//messagesBeReceived:消息已被对方收到,目前,判定消息被对方收到是有两种可能,1:对方确实是在线并且实时收到了,2:对方不在线或者服务端转发过程中出错了,由服务端进行离线存储成功后的反馈(此种情况严格来讲不能算是“已被收到”,但对于应用层来说,离线存储了的消息。原则上就是已送达了的消息:因为用户下次登陆时肯定能通过HTTP协议取到)
code:0, //数字类型;错误码
msg:'', //字符串类型;错误信息
fingerPrintOfProtocal:'',//字符串类型;当该消息需要QoS支持时本回调参数为该消息的特征指纹码,否则为空
dwUserid:'', //字符串类型;消息的发送者id(RainbowCore框架中规定发送者id=“0”即表示是由服务端主动发过的,否则表示的是其它客户端发过来的消息)
dataContent:'', //字符串类型;消息内容
theFingerPrint:'', 字符串类型;已被收到的消息的指纹特征码(唯一ID),应用层可据此ID来找到原先已发生的消息并可在UI是将其标记为”已送达“或”已读“以便提升用户体验
typeu:0, //数字类型;应用层专用字段——用于应用层存放聊天、推送等场景下的消息类型,此值为-1时表示未定义。MobileIMSDK_X框架中,本字段为保留字段,不参与框架的核心算法,专留用应用层自行定义和使用
messages:[{ //json数组,消息内容
bridge:true, //布尔类型;是否来自跨服务器的消息,true表示是、否则不是。本字段是为跨服务器或集群准备的。
type:0, //数字类型;协议类型,本字段为框架专用字段,本字段的使用涉及IM核心层算法的表现,如无必要请避免应用层使用此字段。补充:理论上应用层不参与本字段的定义,可将其视为透明,如需定义应用层的消息类型,请使用 {@link typeu} 字段并配合dataContent一起使用
dataContent:'',//字符串类型;协议数据内容,本字段用于MobileIMSDK_X框架中时,可能会存放一些指令内容。当本字段用于应用层时,由用户自行定义和使用其内容
from:'', //字符串类型;消息发出方的id,为“-1”表示未设定、为“0”表示来自Server
to:'', //字符串类型;消息接收方的id,为“-1”表示未设定、为“0”表示发给Server
fp:'', //字符串类型;用于QoS消息包的质量保证时作为消息的指纹特征码(理论上全局唯一)
QoS:true, //布尔类型;是否需要进行QoS质量保证
typeu:'' //字符串类型;应用层专用字段——用于应用层存放聊天、推送等场景下的消息类型,此值为-1时表示未定义。MobileIMSDK_X框架中,本字段为保留字段,不参与框架的核心算法,专留用应用层自行定义和使用
}]
}
var mobileIM = api.require('mobileIM');
mobileIM.addMessageListener(function(ret) {
console.log(JSON.stringify(ret))
});
iOS系统,Android系统
可提供的1.0.0及更高版本
##错误码常量表
##协议类型