iOS推送javaPNS源码解析一,设备类

来源:互联网 发布:网络优化教程 编辑:程序博客网 时间:2024/05/16 04:04

最近分析了javaPns2.2的源码,根据模块简要总结下

首先是device模块,device顾名思义就是设备的意思,这对于ios手机推送来说,就是iPhone4/4s/5/5s/6/6s,当然推送到平板应该也是可以的,平板的我没试过,有条件的童鞋们可以试下。

先说Device接口吧,该接口定义了设备的基本属性的获取方法,1、token;2、最后跟服务器注册时间;3、deviceId,一般情况下跟token一致,表示唯一的设备。推送的时候我们只设置token就好了。

DeviceFactory,该接口已经不推荐使用,该接口用于向一个map中存取删Device对象,好简单有木有!
Devices,这个是个经常使用的实类,主要有两个方法,

public static List<Device> asDevices(Object rawList),该方法是将String,String[],List<String>,List<Device>,Device[]等类型的参数转化为一组设备对象,很高大上有木有,不过说白了里面就是根据token创建device对象Device,或者判断为Device类型后直接返回。

public static List<PayloadPerDevice> asPayloadsPerDevices(Object rawList),这个方法是将PayloadPerDevice[],PayloadPerDevice,List<PayloadPerDevice>格式的对象返回为List<PayloadPerDevice>对象

这里面需要说明一个类PayloadPerDevice,该类表示它自身包含一个消息体和一个设备,该消息体要发给这个设备。

下面看设备的基本实现

BasicDeviceFactory,这个类实现了DeviceFactory接口,内部实现了一个Map<String, BasicDevice>对象,进行device的增删查,该map使用deviceId作为key,以Device最为value。已经不推荐使用该类。

BasicDevice,该类实现Device接口,实现其相关属性的set/get方法,并提供了token校验:是否64位。

剩下的就是各种异常类

DuplicateDeviceException,BasicDeviceFactory中存入map的时候发现相同的key,报异常

InvalidDeviceTokenFormatException,token校验失败异常

NullDeviceTokenException,BasicDeviceFactory中存入map的时候发现key为null,报异常

NullIdException,BasicDeviceFactory中存入map的时候发现id为null,报异常

UnknownDeviceException,BasicDeviceFactory中获取设备为null,报异常



原创粉丝点击