推送之HelloWorld及个推Smart Push
最近有个朋友想要推送一些消息到自己的APP上,自己用了HTTP轮询的方式比较耗电,也比较占用流量,一旦用户关闭了进程,消息则很难触达,于是,咨询我有没有什么好的解决方案。我告诉他其实可以使用推送,他瞪大眼睛问我推送是什么?我告诉他其实就是Andriod版的苹果推送,他才反应过来,问了下其他人,发现身边很多朋友还不知道有推送这回事情。所以今天就在这里给大家讲下什么是推送,怎么使用,以及怎么利用它来提升自己的留存用户。
现在其实有很多现成的推送服务可以选择,比较了几家主流的我决定用个推来演示整个推送的流程。这个“个推”吸引我的地方在于,商用的用户比较多,也较稳定,接口也比较简单。但是它比较低调宣传也不多,应该是那种闷声发财的主。
推送的基本原理其实类似,其实就是通过手机和服务器之间的Socket维持一个TCP长连接,通过这个长连接来实现服务器和客户端之间的通信。所以推送服务的提供商都会同时提供一个库来供第三方引用,这个嵌入的库会帮助第三方应用维护和服务器之间的连接,包括权限校验,断开重连等的工作。这样暴露给第三方开发者的就是一个简单的接口了,开发人员不必关心网络的断开与重连,以及心跳检测等各种复杂的技术问题。当然,除此以外,这些潜入的库往往还会封装一些其他的接口,比如帮助你收到消息后显示在通知栏,展示页面,甚至激活你的应用,传递数据到应用并显示在应用中的某个界面等。这些功能都可以极大的简化app开发的工作,有人问我推送和短信有什么区别,我想这些扩展的功能就是和短信最大的区别吧。至于,之前那个朋友使用HTTP方式轮询之所以会出现耗电耗流量的情况也是有原因的,因为HTTP请求最终其实还是通过TCP协议实现的,只不过它的TCP连接是短连接,握手非常频繁,所以自然就比较耗电,而且HTTP方式是基于文本方式进行通信的,因此协议冗余比较大,流量消耗自然就大了。而且轮询方式带来的问题是,在两次轮询之间的时间间隔内是没办法拿到服务器下发的消息的。因此,实时性会大打折扣。而长连接就没有这些问题,而且还有个好处,就是当你的应用即使不活跃也没关系,你也可以有办法触达,提升活跃度。当然,长连接也会有它的问题,就是开发的难度较大。而且,手机应用的一个特点是移动,大家都是带着手机跑的。所以,当你跑进电梯或者隧道的话,如果信号不好连接就会断掉,这个时候程序就得重新连接,这就无形中增加了这个东西的难度。
好了,管它怎么实现的,接下来直接上干货!我们来看看怎么通过推送服务来实现推送的流程。个推的接入流程大致上是下面这样子的:

超级简单是吧?接下来我就娓娓道来,首先打开:http://dev.igetui.com/login.htm,点击“立即注册”:

填写注册信息:

然后是激活:

反正我就不废话了,此处略去100字。。。
然后登录后直接点击“登记应用”:

下面我们来登记应用:


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

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

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

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

接下来:
- 把GetuiSdk-xxx.jar、GetuiExt- xxx.jar以及armeabi文件夹复制到工程根目录下的libs文件夹中
(若没有libs目录,则选中工程右键“New”->Folder->命名为“libs”):

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

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



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

不过我是演示用的,所以这步就略过去了。
6、接下来一部比较重要,在AndroidManifest.xml 里添加SDK所需的服务声明和权限声明(注意添加在Application标签里面):
直接点击“复制代码”就可以了,这里面的配置都是根据你之前的配置动态生成好的。

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

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

拷贝好的效果:

8、然后安装应用到Andriod手机上
9、点击按钮:

10、收到消息的效果:

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

以及高级设置

你可以根据需要选择不同的方式进行推送。
好了就讲到这里吧,比较晚了,后面有时间我还会介绍一些个推的高级属性,比如:
l 报表功能
l 接口推送
l 高性能推送
l 以及自定义接口推送
通过个推的应用推送技术,开发者可以在应用推送功能上节省开发成本,并达到节省资源、保证推送质量,省流量和电能的效果,开发者还可获得推送的BI数据等相关服务。个推还提供智能推送服务,通过属性分析与推送测试的功能,帮助找到APP用户中最精准的人群,摒弃盲目推送技术,从而进行精细化运营。这是2014年新推出的个推2.0产品,Smart Push!
尽请期待!
推送之HelloWorld及个推Smart Push的更多相关文章
- 推送通知/传感器/UIDynamic仿真(推送通知已适配iOS10)
推送通知/传感器/UIDynamic 一.推送通知 1.推送通知简介 什么是推送通知 此处的推送通知与NSNotification没有任何关系 可以理解为,向用户推送一条信息来通知用户某件事情 作用: ...
- iOS的推送机制APNs:本地推送&远程推送
本地推送: 本地推送主要应用在备忘录,闹钟等本地的,基于时间定时的消息提醒.本篇不做详细描述. 远程推送:APNS(苹果推送通知服务) iOS远程推送机制的原理及流程: 注册推送(橙色部分):若该Ap ...
- 与众不同 windows phone (9) - Push Notification(推送通知)之概述, 推送 Toast 通知
原文:与众不同 windows phone (9) - Push Notification(推送通知)之概述, 推送 Toast 通知 [索引页][源码下载] 与众不同 windows phone ( ...
- Windows Phone开发(43):推送通知第一集——Toast推送
原文:Windows Phone开发(43):推送通知第一集--Toast推送 好像有好几天没更新了,抱歉抱歉,最近"光荣"地失业,先是忙于寻找新去处,唉,暂时没有下文.而后又有一 ...
- java推送数据到app--极光推送
之前项目有用到需要把数据推送到app端 采用的是极光推送 特此把工具类和pom.xml需要的jar整理如下 pom.xml需要jar如下 <!-- 极光推送 --> <depende ...
- .net平台借助第三方推送服务在推送Android消息(极光推送)
最近做的.net项目(Windows Service)需要向Android手机发送推送消息,真是有点困难,没有搞过就不停的搜文档,最后看到了一个开源项目PushSharp,可以在.net平台推送IOS ...
- 使用【百度云推送】第三方SDK实现推送功能具体解释
之前介绍过怎样使用shareSDK实现新浪微博分享功能,今天介绍怎样使用百度云推送SDK实现Android手机后台推送功能. 执行效果例如以下 第一步,假设使用百度的SDK,当然要先成为百度的开发人员 ...
- python 全栈开发,Day131(向app推送消息,玩具端消息推送)
先下载github代码,下面的操作,都是基于这个版本来的! https://github.com/987334176/Intelligent_toy/archive/v1.4.zip 注意:由于涉及到 ...
- ios -- 极光推送《2》--极光推送消息推送成功,但是手机收不到的解决方法
1.确认证书是否与app的Bundle ID是否一致 2. 确认你的推送证书是否已经过期 3.确认你的APP_KEY是否和极光APP_KEY是否一致 4.正确调用bindChannel,并成功返回ap ...
随机推荐
- HDU 1505 Largest Rectangle in a Histogram && HDU 1506 City Game(动态规划)
1506意甲冠军:给你一个连续的直方图(拼贴底部长度1).求连续基质区. 对每一个直方图,分别向左向右进行扩展. #include<cstdio> #include<stdlib.h ...
- CentOS安装KVM步骤虚拟机,绝对实用!
KVM(Kernel-based Virtual Machine)速记.这是rhel5.4最新的虚拟化技术启动,现在只支持红帽64位rhel5.4在执行KVM,硬件必须支持同一时间VT技术,网上找 ...
- MVC中使用泛型仓储模式和依赖注入
在ASP.NET MVC中使用泛型仓储模式和依赖注入,实现增删查改 原文链接:http://www.codeproject.com/Articles/838097/CRUD-Operations-Us ...
- 从头学起android<android基本的绘图.四十六.>
在一般的图形渲染用户通常只需要重写onDraw()该方法可以是.但是假设,才能真正完成绘图操作.此外,我们需要掌握的四大核心经营类: android.graphics.Bitmap:主要表示的是一个图 ...
- 网络资源(2) - Maven视频
2014_08_23 http://v.youku.com/v_show/id_XNDE2NzM0Nzk2.html Maven最佳实践,公司真实环境实践-私服最佳实践 2014_08_24 http ...
- 详细解释 集成Maven Spring Mybatis项目包生成Bat文件
有时在项目必须Maven项目包生成bat文件,长官一人.本文将解释的具体使用方法maven-assembly-plugin插件实现bat文件包. 1.首先看一下项目结构 2.配置pom.xml文件,在 ...
- DFS-hdu-2821-Pusher
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2821 题目意思: 给一个n*n的矩阵,里面有些位置是空的,有些位置有箱子(a代表一个箱子,b代表两个 ...
- Floodlight Controller 路线原则
SDN的出现能够使得各种复杂的路由协议从原本的Device OS中剥离出来,放在SDN Controller中.Controller用一种简单的协议来和全部的Router进行通信.就能够获得 ...
- Tiptop二二次开发系列
易拓GP 4gl二二次开发系列.使用文档工具的深度开发,包装分享. 包含文件: Genero BDL HB 2.0 .pdf Genero Studio 4GL官方开发手冊.pdf 下载地址:http ...
- sql事务,在sql2000里判断执行是否成功用@@ERROR 判断
原文:sql事务,在sql2000里判断执行是否成功用@@ERROR 判断 贴个sql事务,在sql2000里判断执行是否成功用@@ERROR 判断 这个东西多少还是有点问题,sql2005了可以用t ...