Android推送服务开发

由于公司之前使用的手机客户端推送服务是极光推送,给公司造成一年几十万的服务费,因此,公司决定开发自己的一套推送服务,初步的技术选型是:

服务端:netty4

关于netty框架在我的下面的博客里面我整理了相关资料,本来还有一些关于mina的由于时间原因暂时没整理出来。

为了便于自己测试,自己动手实现了如何使用netty完成服务端消息推送以及在Android客户端如何将接受到的信息显示在通知栏,整体思路大概是这样的:

  • 服务端使用netty框架开启基于TCP监听服务。
  • 客户端发起TCP连接(不关闭,长连接),并实现心跳包,断开重连机制。
  • 服务端对长连接进行管理(接受心跳包,处理异常连接),并推送消息。
  • 客户端监听到消息后显示在通知栏,查看消息时客户端会将数据提交到服务端进行统计。

服务端对自己来说实现起来比较简单,但是由于自己之前没有搞过android这块,不得不去补一些有关android的知识,我是这么分析的:

  • 首先需要知道android是通过什么机制通知系统通知栏显示东西的。
  • 其次要了解的是android组件的组成以及各个组件的通信方式。

OK!有了基本的思路之后就开始在网上找资料了。

  • android是通过NotificationManager 来异步通知通知系统通知栏的,这里说的异步可能就决定了我在统计数据的时候有一种数据时统计不了的(用户人为关闭了APP通知栏),在网上找了很多资料,又说要root权限又说android系统不会提供关掉通知栏的设置的(实际上我的小米手机上是有那个功能的)。但是我一开始的思路是这样的,既然会提供手动关闭通知栏的系统功能,那么系统内部应该广播一下这个操作才合理一点啊,可惜的是没有这个广播。
  • 关于android的组件大致可以分为四大类:

    Activity:通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出 响应。

    Service:一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序。

    Content Provider:内容提供者,

    BroadcastReceiver:广播接收器。

    他们的通信一般是使用intent来通信的,当然为了安全,里面都有各自的方式,重写方法的时候就能拿到组件之间需要发送的信息了。

最后,由于上面的过程自己只花了一个下午的时间来搭建,android客户端的代码基本上都是百度搜到的,故就不把源码贴出来了,不过自己总算是入门了,整体感觉还是蛮简单的,操作的时候也没遇到什么困难,把思路分享出来希望对一些没找对学习方法的人有用。

Android推送服务开发,布布扣,bubuko.com

时间: 2024-10-08 08:16:10

Android推送服务开发的相关文章

Android推送服务(GCM)----GCM Architectural Overview翻译

GCMArchitectural Overview Google Cloud Messaging for Android (GCM)是一个能够帮助开发者从服务器端发送数据到运行在Android手机上的程序的服务.这个服务提供了一个简单,轻量级的机制使得服务器端可以告诉移动端的程序与服务器端建立直接的联系,来获取更新的程序或者用户的数据.C2DM服务可以处理所有的消息队列的问题并且可以把消息发送到目标机器上运行的目标程序. 简介 GCM的主要特点: 1  它允许第三方的程序服务端发送消息到他们的安

巧用apache httpcore-nio实现android推送服务

1. 背景 Android推送服务应用非常广泛,一般有轮询.SMS推送.IP推送几种实现方式.由于轮询的即时性不高.SMS推送需要不菲的费用,所以一般采取IP推送.由于google的IP推送平台C2DM国内被屏蔽,国内涌现很多优秀的推送平台如个推.极光推送.由于实现推送服务有一定技术难度,很多移动互联网应用直接租用这些平台服务,达到快速拓展业务的目标. 但是在一些企业和行业应用场合,限制手机接入互联网,不能采用互联网推送平台,就必须实现自己的推送服务.国内流行的方案是采用开源的androidpn

java后端IM消息推送服务开发——协议

最近在一家saas企业使用Mqtt开发IM消息推送服务,把开发中的一些问题记录下来,项目仍在商用中,完整的消息服务包括4个模块---协议protocol,信令Signal,规则Rule,状态Status,这个主题主要是协议protocol部分. 主要技术涉及到MongoDB,webservice,httpclient,Mqtt等 protocol分为四个模块类来实现,当然这是为了以后的扩展性比较好 首先看一下我们的主类,主要是mqtt基础方法的一个框架 public class MqttProt

【Android】基于XMAPP协议实现Android推送服务(亲测可用)

一.PC端直接运行服务器 1. 进入目录androidpn-server-0.5.0\bin,双击run.bat 2. 浏览器输入网址:http://127.0.0.1:7070/index.do 3. 将androidpn-client导入到Eclipse 4. 配置好目标平台,打开androidpn-client/res/raw/androidpn.properties文件,进行如下修改 apiKey=1234567890 xmppHost=10.0.2.2(模拟器使用该地址,真机模拟的话,

Mosquitto搭建Android推送服务(二)Mosquitto简介及搭建

文章钢要: 1.了解Mosquitto服务器 2.在Liunx中搭建Mosquitto服务器 3.设置Mosquitto集群 一.Mosquitto简介 一款实现了消息推送协议 MQTT v3.1 的开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机.嵌入式计算机.微型控制器等移动设备.一个典型的应用案例就是 Andy Stanford-ClarkMosquitto(MQTT协议创始人之一)在家中实现的远

java后端IM消息推送服务开发——规则

这一部分主要是负责智能消息推送,根据不同公司的不同产品的不同页面的不同事件的不同用户推送不同的消息,这也是整个业务逻辑的核心 技术主要涉及到Mysql,文件读取,dbutils,beanutils,mqtt,C3P0连接池 memcache package net.engyne.mqqt; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import net.engyne.

Mosquitto搭建Android推送服务(二)Mosquitto集群搭建

文章钢要: 1.进行双服务器搭建 2.进行多服务器搭建 一.Mosquitto的分布式集群部署 如果需要做并发量很大的时候就需要考虑做集群处理,但是我在查找资料的时候发现并不多,所以整理了一下,搭建简单的Mosquitto集群模式. 首先集群需要2台以上的Mosquitto服务器.安装方式同上. 先了解下Mosquitto集群模式的逻辑图,如下: 可以看出,无论在那台服务器中订阅了信息,无论在那台服务器上发布信息,订阅者都可以收到发布的信息.那么下一步我们着手搭建集群服务器,为了方便只演示2台服

Mosquitto搭建Android推送服务番外篇一:各种报错解决

文章钢要: 目前笔者在开发搭建Mosquitto服务器,在此期间遇到很多实际问题,所以走了很多弯路,在这里写出来为大家提供一些帮助. 1.安装完成后启动Mosquitto报错 执行mosquitto客户端程序时出现找不到动态库:libmosquitto.so.1 ./mosquitto_sub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file

Mosquitto搭建Android推送服务(四)Mosquitto服务器用户登录与权限配置

文章钢要: 1.对服务器进行多用户配置 2.根据不同用户给予不同权限 一.Mosquitto的用户机制 mosquitto中可以添加多个用户,只有使用用户名和密码登陆服务器才允许用户进行订阅与发布操作.可以说用户机制是mosquitto重要的安全机制,增强服务器的安全性. 用户与权限配置需要修改3处地方: 1.mosquitto中最最最重要的配置文件mosquitto.conf. 2.pwfile.example (保存用户名与密码) 3.aclfile.example (保存权限配置) 首先给