Protocal Class Reference
Inherits from | NSObject |
---|---|
Declared in | Protocal.h |
Overview
协议报文对象.
重要说明:因本类中的属性retryCount仅用于本地(不需要通过网络把值传给接收方),因为在对象转JSON时应去掉此属性,那么接收方收到本对象并反序列化时该属性正好就是默认值0.
@author Jack Jiang(http://www.52im.net/thread-2792-1-1.html)) @version 1.0
bridge
意义:是否来自跨服务器的消息,true表示是、否则不是。本字段是为跨服务器或集群准备的。 默认:false
@property (nonatomic, assign) bool bridge
Availability
3.0
Discussion
意义:是否来自跨服务器的消息,true表示是、否则不是。本字段是为跨服务器或集群准备的。 默认:false
Declared In
Protocal.h
type
意义:协议类型。 注意:本字段为框架专用字段,本字段的使用涉及IM核心层算法的表现,如无必要请避免应用层使用此字段。 补充:理论上应用层不参与本字段的定义,可将其视为透明,如需定义应用层的消息类型,请使用 {@link typeu} 字段并配合dataContent一起使用。 默认:0
@property (nonatomic, assign) int type
Discussion
意义:协议类型。 注意:本字段为框架专用字段,本字段的使用涉及IM核心层算法的表现,如无必要请避免应用层使用此字段。 补充:理论上应用层不参与本字段的定义,可将其视为透明,如需定义应用层的消息类型,请使用 {@link typeu} 字段并配合dataContent一起使用。 默认:0
Declared In
Protocal.h
dataContent
意义:协议数据内容。 说明:本字段用于MobileIMSDK_X框架中时,可能会存放一些指令内容。当本字段用于应用层时,由用户自行定义和使用其内容
@property (nonatomic, retain) NSString *dataContent
Discussion
意义:协议数据内容。 说明:本字段用于MobileIMSDK_X框架中时,可能会存放一些指令内容。当本字段用于应用层时,由用户自行定义和使用其内容
Declared In
Protocal.h
from
意义:消息发出方的id(当用户登陆时,此值可不设置) 说明:为“-1”表示未设定、为“0”表示来自Server。 默认:"-1"
@property (nonatomic, retain) NSString *from
Discussion
意义:消息发出方的id(当用户登陆时,此值可不设置) 说明:为“-1”表示未设定、为“0”表示来自Server。 默认:"-1"
Declared In
Protocal.h
to
意义:消息接收方的id(当用户退出时,此值可不设置) 说明:为“-1”表示未设定、为“0”表示发给Server。 默认:"-1"
@property (nonatomic, retain) NSString *to
Discussion
意义:消息接收方的id(当用户退出时,此值可不设置) 说明:为“-1”表示未设定、为“0”表示发给Server。 默认:"-1"
Declared In
Protocal.h
fp
意义:用于QoS消息包的质量保证时作为消息的指纹特征码(理论上全局唯一)。 注意:本字段为框架专用字段,请勿用作其它用途。
@property (nonatomic, retain) NSString *fp
Discussion
意义:用于QoS消息包的质量保证时作为消息的指纹特征码(理论上全局唯一)。 注意:本字段为框架专用字段,请勿用作其它用途。
Declared In
Protocal.h
QoS
意义:true表示本包需要进行QoS质量保证,否则不需要. 默认:false
@property (nonatomic, assign) bool QoS
Discussion
意义:true表示本包需要进行QoS质量保证,否则不需要. 默认:false
Warning: 当本属性申明为BOOL类型时,在模拟器iPhone 4s、iPhone 5时,利用官方的NSJSONSerialization类转成JSON时,会被解析成0或1, 而在iPhone 5s和iPhone 6上会被解析成true或false,符合JSON规范的应是true和false. 把申明改成bool型时,在4s、5、5s、6上都能正常解析成true和false!
Declared In
Protocal.h
typeu
意义:应用层专用字段——用于应用层存放聊天、推送等场景下的消息类型。 注意:此值为-1时表示未定义。MobileIMSDK_X框架中,本字段为保留字段,不参与框架的核心算法,专留用应用层自行定义和使用。 默认:-1
@property (nonatomic, assign) int typeu
Availability
3.0, at 20161021
Discussion
意义:应用层专用字段——用于应用层存放聊天、推送等场景下的消息类型。 注意:此值为-1时表示未定义。MobileIMSDK_X框架中,本字段为保留字段,不参与框架的核心算法,专留用应用层自行定义和使用。 默认:-1
Declared In
Protocal.h
– getRetryCount
本字段仅用于QoS时:表示丢包重试次数。
- (int)getRetryCount
Discussion
本字段仅用于QoS时:表示丢包重试次数。
@return
Declared In
Protocal.h
– increaseRetryCount
本方法仅用于QoS时:选出包重试次数+1。
本方法理论上由MobileIMSDK内部调用,应用层无需额外调用。
- (void)increaseRetryCount
Discussion
本方法仅用于QoS时:选出包重试次数+1。
本方法理论上由MobileIMSDK内部调用,应用层无需额外调用。
Declared In
Protocal.h
– toGsonString
将本对象转换成JSON字符串.
- (NSString *)toGsonString
Discussion
将本对象转换成JSON字符串.
@return
Declared In
Protocal.h
– toBytes
将本对象转换成JSON表示的byte数组(以便网络传输).
- (NSData *)toBytes
Discussion
将本对象转换成JSON表示的byte数组(以便网络传输).
@return
Declared In
Protocal.h
– clone
克隆本对象.
克隆一个Protocal对象(该对象已重置retryCount数值为0).
- (Protocal *)clone
Return Value
本对象新的复制体
Discussion
克隆本对象.
克隆一个Protocal对象(该对象已重置retryCount数值为0).
Declared In
Protocal.h
+ initWithType:content:from:to:
创建Protocal对象的快捷方法(QoS标记默认为true、typeu默认=-1)。
+ (Protocal *)initWithType:(int)type content:(NSString *)dataContent from:(NSString *)from to:(NSString *)to
Parameters
type |
协议类型 |
---|---|
dataContent |
协议数据内容 |
from |
消息发出方的id(当用户登陆时,此值可不设置) |
to |
消息接收方的id(当用户退出时,此值可不设置) |
Return Value
新建的Protocal对象
Discussion
创建Protocal对象的快捷方法(QoS标记默认为true、typeu默认=-1)。
Declared In
Protocal.h
+ initWithType:content:from:to:tu:
创建Protocal对象的快捷方法(QoS标记默认为true)。
+ (Protocal *)initWithType:(int)type content:(NSString *)dataContent from:(NSString *)from to:(NSString *)to tu:(int)typeu
Parameters
type |
协议类型 |
---|---|
dataContent |
协议数据内容 |
from |
消息发出方的id(当用户登陆时,此值可不设置) |
to |
消息接收方的id(当用户退出时,此值可不设置) |
typeu |
应用层专用字段——用于应用层存放聊天、推送等场景下的消息类型,不需要设置时请填-1即可 |
Return Value
新建的Protocal对象
Discussion
创建Protocal对象的快捷方法(QoS标记默认为true)。
Declared In
Protocal.h
+ initWithType:content:from:to:qos:fp:tu:
创建Protocal对象的快捷方法.
+ (Protocal *)initWithType:(int)type content:(NSString *)dataContent from:(NSString *)from to:(NSString *)to qos:(bool)QoS fp:(NSString *)fingerPrint tu:(int)typeu
Parameters
type |
协议类型 |
---|---|
dataContent |
协议数据内容 |
from |
消息发出方的id(当用户登陆时,此值可不设置) |
to |
消息接收方的id(当用户退出时,此值可不设置) |
QoS |
是否需要QoS支持,true表示是,否则不需要 |
fingerPrint |
协议包的指纹特征码,当 QoS字段=true时且本字段为null时方法中将自动生成指纹码否则使用本参数指定的指纹码 |
typeu |
应用层专用字段——用于应用层存放聊天、推送等场景下的消息类型,不需要设置时请填-1即可 |
Return Value
新建的Protocal对象
Discussion
创建Protocal对象的快捷方法.
Declared In
Protocal.h
+ initWithType:content:from:to:qos:fp:bg:tu:
创建Protocal对象的快捷方法.
+ (Protocal *)initWithType:(int)type content:(NSString *)dataContent from:(NSString *)from to:(NSString *)to qos:(bool)QoS fp:(NSString *)fingerPrint bg:(bool)bridge tu:(int)typeu
Parameters
type |
协议类型 |
---|---|
dataContent |
协议数据内容 |
from |
消息发出方的id(当用户登陆时,此值可不设置) |
to |
消息接收方的id(当用户退出时,此值可不设置) |
QoS |
是否需要QoS支持,true表示是,否则不需要 |
fingerPrint |
协议包的指纹特征码,当 QoS字段=true时且本字段为null时方法中将自动生成指纹码否则使用本参数指定的指纹码 |
bridge |
是否来自跨服务器的消息,true表示是、否则不是。本字段是为跨服务器或集群准备的 |
typeu |
应用层专用字段——用于应用层存放聊天、推送等场景下的消息类型,不需要设置时请填-1即可 |
Return Value
新建的Protocal对象
Discussion
创建Protocal对象的快捷方法.
Declared In
Protocal.h
+ genFingerPrint
返回QoS需要的消息包的指纹特征码.
重要说明:使用系统时间戳作为指纹码,则意味着只在Protocal生成的环境中可能唯一. 它存在重复的可能性有2种:
- 1) 比如在客户端生成时如果生成过快的话(时间戳最小单位是1毫秒,如1毫秒内生成多个指纹码),理论上是有重复可能性;
- 2) 不同的客户端因为系统时间并不完全一致,理论上也是可能存在重复的,所以唯一性应是:好友+指纹码才对.
+ (NSString *)genFingerPrint
Return Value
指纹特征码实际上就是系统的当时时间戳
Discussion
返回QoS需要的消息包的指纹特征码.
重要说明:使用系统时间戳作为指纹码,则意味着只在Protocal生成的环境中可能唯一. 它存在重复的可能性有2种:
- 1) 比如在客户端生成时如果生成过快的话(时间戳最小单位是1毫秒,如1毫秒内生成多个指纹码),理论上是有重复可能性;
- 2) 不同的客户端因为系统时间并不完全一致,理论上也是可能存在重复的,所以唯一性应是:好友+指纹码才对.
* 目前使用的UUID基本能保证全局唯一,但它有36位长(加上分隔符32+4),目前为了保持框架的算法可读性暂时不进行优化,以后可考虑使用2进制方式或者Protobuffer实现。
See Also
ToolKits.generateUUID()
Declared In
Protocal.h