问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何使用androidpn实现android手机消息推送

发布网友 发布时间:2022-04-27 10:42

我来回答

1个回答

热心网友 时间:2023-07-13 00:21

由于目前的web项目中要用到android手机消息推送,尝试过很多中方式之后发现,利用androidpn的部分代码来实现这个功能是比较方便的。经过使用tsung进行简单的压力测试,证明这个框架能够满足大多数简单应用的需求。
Androidpn包含有server和client两个包,server部分可以作为服务器单独运行,也可以嵌入到web项目的servlet中,在tomcat环境中与web项目的其他部分交互。androidpn的简单用法网上已经有很多文章介绍,这里就不细说了。主要谈谈如何将androidpn和自己的web程序整合到一起。
Server部分的主要包结构如下:
其中org.androidpn.server.,org.androidpn.server.model和org.androidpn.server.service为使用hibernate链接数据库并实现简单的用户登录认证,开发中可以用我们自己的认证模块替换。剩下的包就是推送的主体实现。
接下来逐个包来看:
1.util包中的类用来加载resources中的配置文件,在配置文件中可指定监听端口和ssl证书目录等属性。
2.org.androidpn.server.xmpp包里面定义了一些异常类型,主要是包含有入口类XmppServer,这个类用来启动和停止server程序。
3.org.androidpn.server.xmpp.auth包里面是认证的一些类,我们自己的认证模块可以在这里与androidpn进行结合。
4.org.androidpn.server.xmpp.codec是XMPP协议的XML文件解析包,server收到和发送的消息都要通过这个包来进行xmpp协议编码和解码。
5.org.androidpn.server.xmpp.handler包主要是对消息的处理,我们可以针对不同的消息类型定义自己的handler,
6.org.androidpn.server.xmpp.net包负责维护与client之间的持久连接,并实现了一些传输方式供发送xmpp消息时使用。
7.org.androidpn.server.xmpp.presence里面只包含PresenceManager类,用来维护client的在线状态。
8.org.androidpn.server.xmpp.push包里面的NotificationManager类包含有向client发送消息的接口。
9.org.androidpn.server.xmpp.router包负责将收到的信息包发送到相应的handler进行处理,是一个路由包。
10.org.androidpn.server.xmpp.session包定义了用来表示持久链接的session,每个session包含一条连接的状态信息。
11.org.androidpn.server.xmpp.ssl是对连接进行ssl认证的工具包。
server发送消息的整个流程主要是:
1. NotificationManager的push接口被调用。
2.使用SessionManager在当前session集合中查找相应的client链接。
3.定义自己的XMPP消息格式并组装。
4.通过相应session,向client发送消息。
在这个流程中我们需要修改的是步骤3,也就是需要定义和组装自己的xmpp消息,以便于将适当的信息传到客户端并便于客户端解析。一个简单的消息组装例子如下:
private IQ createMessageIQ(String title, String message, String userId,
String json) {
Element notification = DocumentHelper.createElement(QName.get(
"message", INQURIE_NAMESPACE));
notification.addElement("title").setText(title);
notification.addElement("text").setText(message);
notification.addElement("userId").setText(userId);
notification.addElement("json").setText(json);
IQ iq = new IQ();
iq.setType(IQ.Type.set);
iq.setChildElement(notification);
return iq;
}

要注意的是在创建element的时候,传入的namespace要和client解析使用的namespace相匹配。
server端接收和处理消息的流程是:
1.connection收到packet,使用tsc.push.server.xmpp.codec解码。
2.router根据packet的namespace等信息,将packet路由到相应的handler。
3.handler进行处理。
相应的router和handler类在androidpn中都有例子可以参考,这里就不贴代码了。开发中只要根据client发送消息的格式,定义自己的router和handler类,然后在PacketRouter中注册router,在IQRouter中注册handler即可。
Client部分的主要包结构如下:
这边包含有消息的收发,解析以及持久连接的发起,重连等功能呢,十分强大,我们开发时完全不用管底层的连接,也不用担心断线,可以专注于业务部分的开发。
同时,代码结构也很简单。去除android的Service和BroadCast类以及一些工具类和常量类不谈:
1.NotificationIQ,NotificationIQProvider,NotificationPacketListener三个类负责对收到的Notification格式的消息进行解析和处理,
2.XmppManager是主控制器,NotificationService通过这个类,在后台维护androidpn连接。
3.PersistentConnectionListener,PhoneStateChangeListener,ReconnectionThread.java三个类则负责监听手机的状态并进行断线重连。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
草青青,青青草,草上接谢珍珠宝,怕日晒怕风摇,摇看珍珠得起早 谜底是... 一加9R要不要升级ColorOS 13正式版 一加9pro怎么coloros12一加9pro升级coloros12的方法 coloros12支持哪些一加机型?coloros12支持一加机型介绍 一加9pro如何coloros12?一加9pro升级coloros12的方法 一加9pro升级coloros12拍照改善吗 我是一个高中生,职教的,我们班上有5个女生,我喜欢有一个,但追她又有... 自动挡d挡旁边的 -是什么意思? 自动挡位上的加减是什么意思? 宣传这个职位是干什么的 如何做安卓推送 android统一消息推送平台如何选择 安卓有什么好点的消息推送软件 Android消息推送,极光推送到底能实现什么? 农商银行卡的预留号码更改可以直接用手机人工服务吗 东莞农商行信用卡预留的手机号码要怎么更改? 东莞农商银行的银行卡手机号换了怎么更改手机 农商银行预留手机号更换了可以在网上修改吗 爱拆车模 | 风火轮 100%?京商 1:18 法拉利 365GT4/BB 汽车模型 准备收藏汽车模型,但是不知道是玩1:43 的还是1:18 的?? 我想在淘宝上买一个合金的汽车模型,10厘米长左右,价格一百左右,有没有可以推荐的 1:18的汽车模型多大?这段时间对汽车模型是情有独钟,想收藏汽车模型,哪个牌子好? 长安CS75 PLUS合金模型1:18比例完美展现 爱拆车模 | 它值不值 1000?BM Creations 1:18 吉姆尼汽车模型 玩汽车模型大概要多少成本 有一个合金模型小汽车玩具,是别人的,我帮助修理一下。正常是一按车 开箱报告 | 全金属外壳!GLM 1:64 乌尼莫克 U5000 汽车模型 1:18 长安CS75 PLUS合金模型,这款模型我是真的爱了,不错啊 想买个汽车模型,是合金的好,还是铁皮的好 性功能检测项目有哪些 超声波发生器有什么作用?? 超声波发生器是超声波清洗机最重要的部分吗? 机械键盘打游戏,青轴,茶轴,红轴,黑轴,用什么好? 超低频高压发生器的作用是什么? 机械键盘的茶轴,黑轴,红轴,青轴差别大吗?玩游戏用哪一款比较合适? 超声波发生器的作用特点是什么? 超低频高压发生器的主要功能是什么?用于哪些方面? 如何选择黑轴和青轴的茶轴? 超声发生器与换能器有什么关联? 大功率超声波发生器的使用 超低频高压发生器的特征和功能是什么? 超低频高压发生器工作原理是什么,有何优势? 超低频高压发生器的使用原理是什么? “超低频高压发生器”如何使用? 超低频高压发生器有什么主要特点? 华融原董事长赖小民因何被判处死刑? 不经历风雨 怎能见彩虹——记中国华融资产管理公司广州办事处**、总经理周伙荣 上官永清的人物履历 戴克维的个人履历 广东厅官养100多个小密是谁100多套房子在同一个小区?