最近有幸负责参与开发公司的CMPP短信网关程序,采用的是Apache Mina框架实现。通过该项目对Socket通信、长连接有了更深一步的理解,于是就想试试将Mina用到Android平台的信息推送上。经过了解发现,目前已经有不少成型的框架能够实现Android平台的信息推送,特别是AndroidPn。

平时我们开发手机客户端,都少不了要于服务器交互,那么当服务器端有新的数据时,客户端是怎么知道的呢?一般可以采用如下两种方式来实现:

1)客户端定期(每隔一段时间,轮询)向服务器发起请求,以检测是否有新的数据。如果轮询的频率太慢,可能导致获取的信息已经过时;如果轮询的频率过快会很耗电、耗手机流量;

2)采用Android的广播机制,拦截服务端发送的短信。即当服务器端有新的数据时,服务器向所有Android客户端发送短信,客户端基于广播机制将短信拦截并通过手机客户端应用呈现。该方案成本较高,需要向电信运营商申请短信发送端口。

以上两种实现方式多少都存在着弊端,并不能真正满足要求,那有没有更好的实现方式呢?当然有,那就是信息推送。推送就意味着当有新的数据时,服务器端会主动将数据“推”到客户端,而不需要客户端不停地检测。这里就不再过多地对“信息推送”进行解释了,下面将直接通过一个AndroidPn示例来演示。

AndroidPn即Android Push Notification,它是Android平台的信息推送框架,基于XMPP协议的Java实现,它包含了完整的服务器端和客户端程序。因此,我们不用开发一行代码,就能体验到信息推送,还在等什么,马上动手吧。AndroidPn框架的下载地址:http://sourceforge.net/projects/androidpn/files/,将以下文件全部下载:

其中,androidpn-server是服务端程序,它包含可执行脚本,能够直接启动运行;android-demoapp是演示示例,一会就直接用它来演示;androidpn-client是客户端源代码,你可以用它来研究androidpn的内部实现。

 第一步:启动androidpn服务端程序。即点击运行android-server-0.5.0\bin\run.bat。启动完成后,可以通过浏览器访问到如下界面:

一会就是通过这个界面向Android手机客户端推送信息。

第二步:启动androidpn客户端程序。将下载的androidpn-demoapp解压并导入到eclipse中,如下图所示:

接着将工程中res/raw/androidpn.properties文件里的xmppHost改为10.0.2.2或者你本机的IP地址,如果不明白为什么是10.0.2.2,请参考我博客的这篇文章《[020] Android模拟器访问本地Web应用》。接着在模拟器中运行该程序,截图如下:

 第三步:通过androidpn服务配置界面向客户端推送信息。回到第一步在浏览器中显示的配置界面,一共有四个选项卡,分别是Home、Users、Sessions和Notifications。其中,Users和Sessions中显示的是连接到androidpn服务器的客户端信息,因为我们刚才已经在模拟器中运行了androidpn客户端程序,所以Users和Sessions中是能够看到一条记录的,如下图所示:

我们最关心的功能在Notifications中,点击并填入以下推送信息:

点击Submit按钮,信息将会被推送到客户端,这时在模拟器的状态栏中会以通知的形式显示推送信息,点击后能够查看到推送信息的完整内容,因为在推荐界面的URI中填入了网页地址,所以点击OK将会自动打开浏览器访问该地址。

   

好了,关于Android的信息推送就介绍到这里。接下来需要去深入了解下AndroidPn的实现原理(其实想想也应该与Socket长连接有关),然后再尝试着用Apache Mina来实现信息推送。

Android平台的信息推送实现相关推荐

  1. [023] Android平台的信息推送实现

    最近有幸负责参与开发公司的CMPP短信网关程序,采用的是Apache Mina框架实现.通过该项目对Socket通信.长连接有了更深一步的理解,于是就想试试将Mina用到Android平台的信息推送上 ...

  2. Flutter在Android平台实现消息推送

    1. 极光推送平台申请应用 1. 注册极光推送平台: 极光官方平台 2. 极光推送平台创建应用: 填写应用程序名称. 选择平台,选择服务,点击下一步. 需要输入应用包名(Android平台),选择渠道 ...

  3. uniapp之unipush安卓app信息推送

    第一步,uniapp 官网查找推送 uni-app官网 介绍业务.开通流程,请务必仔细阅读 UniPush使用指南 - DCloud问答 第二步,unipush相关链接 开通的unipush是封装了个 ...

  4. .net平台借助第三方推送服务在推送Android消息(极光推送) 转

    分类: .net外部工具接口(3) .net知识精华(29) 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近做的.net项目(Windows Service)需要向Android手机发送推 ...

  5. 【苹果家庭群发推送】软件安装Apple推送是一种基于IMESSAGE平台的新信息推送功效的营销软件

    推荐内容IMESSGAE相关 作者推荐内容 iMessage苹果推软件 *** 点击即可查看作者要求内容信息 作者推荐内容 1.家庭推内容 *** 点击即可查看作者要求内容信息 作者推荐内容 2.相册 ...

  6. php订阅号发送消息,PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息...

    2013年10月06日最新整理. PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息限制 微信公共平台消息主动推送接口一直是腾讯的私用接口,相信很多朋友都非常想要用到这个功能. 通过学习 ...

  7. Android开发之第三方推送JPush极光推送知识点详解 学会集成第三方SDK推送

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 下面是一些知识点介绍,后期将会带领大家进行代码实战: 一.Android实现推送方式解决方案: 1.推 ...

  8. bmob云服务器信息推送,FAQ-Bmob后端云

    Q: Bmob 平台是做什么的? A: Bmob 是多租户无模式的移动应用云服务,它可以让 android/IOS/WP 等移动开 发者无需掌握任何一门服务器开发语言(如 JAVA/PHP 等),将注 ...

  9. android极光推送判断消息,通过极光推送给Android所有用户发送推送消息

    https://www.cnblogs.com/yueguanguanyun/p/8485381.html 所需jar包,在maven中添加下列依赖: cn.jpush.api jpush-clien ...

最新文章

  1. python爬虫入门教程-Python爬虫入门教程——爬取自己的博客园博客
  2. 鸟哥的Linux私房菜(基础篇)- 第十一章、认识与学习 BASH
  3. java asm jndi_GitHub - Q1ngShan/JNDI: JNDI 注入利用工具
  4. Matlab绘图添加直角坐标轴
  5. 素数c分解语言程序,PTA|《C语言程序设计实验与习题指导(第3版)》实验4-2-3 验证“哥德巴赫猜想” (20分)...
  6. “我们的边缘计算技术点,可能超前了业界一点”
  7. 测井解释-泥岩-煤层-砂岩-石灰岩-白云岩-硬石膏-岩盐-水
  8. 【项目管理】人力资源管理之四:双因素理论和期望理论
  9. 2011浙江省公务员考试申论大作文的写作
  10. 小米4调整系统分区刷入opengapps stock
  11. 服务器UDIMM、LRDIMM、RDIMM的区别
  12. 从numpy掩码到pytorch掩码
  13. 计算机网络一课一文1000字,第一课认识计算机网络(20页).doc
  14. HDU 5514 Frogs
  15. XY6762/XY6765/XY8788 如何使用 DCT 工具配置 DWS 文件?
  16. (10.2)【隐写实现】简介、流程图、具体步骤
  17. linux SSD 硬盘优化
  18. 中兴财务新云陈虎:财务应从最小数据集转为大数据 洞察五新商机
  19. 合泰杯——合泰单片机工程6之定时器中断
  20. python换零钱_322.零钱兑换-python

热门文章

  1. 直接java调用tflite_TFLite基础知识
  2. 良心推荐,我珍藏的一些Chrome插件
  3. 金融计算机怎么学,为什么许多人建议本科学数学,研究生阶段转金融或者计算机?学数学的发展方向只有纯数学计算机以及金融吗?......
  4. pycharm 远程调试腾讯云gpu报错 Couldn‘t refresh skeletons for remote interpreter 解决方法
  5. matlab2020安装之后桌面快捷方式是Polyspace R2020,怎么启动Matlab2020
  6. 【计算机网络实验Mooc】传输层实验测试题
  7. 几何算法——10.欧拉操作
  8. java 解析rmc_GPS 0183协议GGA、GLL、GSA、GSV、RMC、VTG解释 + 数据解析 | 技术部落
  9. Ansible 安装libselinux-python之后仍然报错
  10. Juniper SSG恢复出厂默认值