推送

        

       现在其实有很多现成的推送服务可以选择,比较了几家主流的我决定用个推来演示整个推送的流程。这个“个推”吸引我的地方在于,商用的用户比较多,也较稳定,接口也比较简单。但是它比较低调宣传也不多,应该是那种闷声发财的主。

       推送的基本原理其实类似,其实就是通过手机和服务器之间的Socket维持一个TCP长连接,通过这个长连接来实现服务器和客户端之间的通信。所以推送服务的提供商都会同时提供一个库来供第三方引用,这个嵌入的库会帮助第三方应用维护和服务器之间的连接,包括权限校验,断开重连等的工作。这样暴露给第三方开发者的就是一个简单的接口了,开发人员不必关心网络的断开与重连,以及心跳检测等各种复杂的技术问题。当然,除此以外,这些潜入的库往往还会封装一些其他的接口,比如帮助你收到消息后显示在通知栏,展示页面,甚至激活你的应用,传递数据到应用并显示在应用中的某个界面等。这些功能都可以极大的简化app开发的工作,有人问我推送和短信有什么区别,我想这些扩展的功能就是和短信最大的区别吧。至于,之前那个朋友使用HTTP方式轮询之所以会出现耗电耗流量的情况也是有原因的,因为HTTP请求最终其实还是通过TCP协议实现的,只不过它的TCP连接是短连接,握手非常频繁,所以自然就比较耗电,而且HTTP方式是基于文本方式进行通信的,因此协议冗余比较大,流量消耗自然就大了。而且轮询方式带来的问题是,在两次轮询之间的时间间隔内是没办法拿到服务器下发的消息的。因此,实时性会大打折扣。而长连接就没有这些问题,而且还有个好处,就是当你的应用即使不活跃也没关系,你也可以有办法触达,提升活跃度。当然,长连接也会有它的问题,就是开发的难度较大。而且,手机应用的一个特点是移动,大家都是带着手机跑的。所以,当你跑进电梯或者隧道的话,如果信号不好连接就会断掉,这个时候程序就得重新连接,这就无形中增加了这个东西的难度。推送如图:

 

Android第三方发帖功能 android第三方推送的原理_推送

    通过推送服务来实现推送的流程。个推的接入流程大致上是下面这样子的:

Android第三方发帖功能 android第三方推送的原理_Android第三方发帖功能_02

    1.首先打开:http://dev.igetui.com/login.htm,点击“立即注册”:

Android第三方发帖功能 android第三方推送的原理_自己的推送_03

2.填写注册信息:

Android第三方发帖功能 android第三方推送的原理_自己的推送_04

然后是激活:

Android第三方发帖功能 android第三方推送的原理_android_05

然后登录后直接点击“登记应用”:

Android第三方发帖功能 android第三方推送的原理_自己的推送_06

下面我们来登记应用:

Android第三方发帖功能 android第三方推送的原理_推送_07

Android第三方发帖功能 android第三方推送的原理_自己的推送_08

     接下来下载开发包,注意这个包里包含了客户端和服务端的SDK,不要弄错了(个推为了方便调用还做了服务器端的SDK)

Android第三方发帖功能 android第三方推送的原理_android_09

这是下载好的压缩包,我们先选择“客户端”:

Android第三方发帖功能 android第三方推送的原理_Android第三方发帖功能_10

进入“客户端”目录后,可以先忽略其他目录直接进入“须导入的资源”:

Android第三方发帖功能 android第三方推送的原理_自己的推送_11

进入后,我们看到了下面这些资源:

Android第三方发帖功能 android第三方推送的原理_推送_12

接下来:

1.   把GetuiSdk-xxx.jar、GetuiExt- xxx.jar以及armeabi文件夹复制到工程根目录下的libs文件夹中

(若没有libs目录,则选中工程右键“New”->Folder->命名为“libs”):

Android第三方发帖功能 android第三方推送的原理_推送_13

2.   右键单击工程,选择BuildPath中的Configure Build Path...,选中Libraries,并通过AddJars...导入工程libs目录下的GetuiSdk-xxx.jar、GetuiExt-xxx.jar文件。我用的是最新的ADT工具会自动导入libs目录下的jar包,所以省略这个步骤。

3.   在初始化的时候加入下面语句:

Android第三方发帖功能 android第三方推送的原理_Android第三方发帖功能_14

4.   进入“layout”目录,把目录下的四个文件拷贝到自己工程下的“res/layout/”目录中:

Android第三方发帖功能 android第三方推送的原理_android_15

Android第三方发帖功能 android第三方推送的原理_Android第三方发帖功能_16

5.   为了修改通知栏提示图标,请在res/drawable-hdpi/、res/drawable-mdpi/、res/drawable-ldpi/等各分辨率资源目录下,放置相应尺寸的push.png图片。该通知栏提示图标显示位置如下:

Android第三方发帖功能 android第三方推送的原理_小型的个人推送_17

6.   接下来一部比较重要,在AndroidManifest.xml里添加SDK所需的服务声明和权限声明(注意添加在Application标签里面):

直接点击“复制代码”就可以了,这里面的配置都是根据你之前的配置动态生成好的。

Android第三方发帖功能 android第三方推送的原理_android_18

注意在“<application>”标签里面添加:

Android第三方发帖功能 android第三方推送的原理_小型的个人推送_19

7.   然后在”application”外面添加如下配置:

Android第三方发帖功能 android第三方推送的原理_推送_20

拷贝好的效果:

Android第三方发帖功能 android第三方推送的原理_推送_21

8.   然后安装应用到Andriod手机上

9.   点击按钮:

Android第三方发帖功能 android第三方推送的原理_小型的个人推送_22

10. 收到消息的效果:

Android第三方发帖功能 android第三方推送的原理_Android第三方发帖功能_23

11. 下面这张图是通过发送页面通知:

Android第三方发帖功能 android第三方推送的原理_推送_24

以及高级设置

Android第三方发帖功能 android第三方推送的原理_android_25

11. 下面这张图是通过发送页面通知: