之前在群里有同学问我关于推送的一些问题,解答之后我觉得这个话题还挺有用,因为几乎大部分人都会遇到这个问题,那姑且就写篇文章总结给你们吧。

1. 为什么要用推送?

推送功能可谓是现如今任何一个 App 的必备功能,因为每天可以推送消息,提升日活啊,用户长久没打开了,推个消息就把用户召回了啊。

一般来说推送都是系统来做的,比如 iOS的推送是苹果自己做的,系统级别的,任何时候都可以推送给用户。

而 Android 的推送本来 Google自己也有一套推送服务,也是系统级别的,叫做 GCM ,Google Cloud Messaging,但是众所周知,Google 的服务在国内根本没法使用,也就意味着我们不得不用第三方的推送服务。

2. 为什么要使用第三方推送服务?

因为 GCM 在国内的限制,所以这块也就是一个机会了,国内因此也衍生了很多推送服务公司。

大部分公司都会选择使用第三方推送服务,因为推送这个事自己做还挺麻烦的,需要服务器资源,开发以及后台管理、统计等,对于一些大公司来说本身有资源做这个事,而且出于安全考虑也会优先自己做,但是大部分中小型公司是不会浪费资源在这块的,尤其创业公司,还是把资源用在自己的核心业务上更急迫,所以大部分中小型互联网公司都会选择第三方推送服务。

3. 有哪些第三方的服务?

目前来说做的比较好的推送服务大概有小米推送、腾讯信鸽推送、百度推送、极光推送、友盟推送等。这些推送服务大都有以下特点:

免费
当然部分公司也有收费的,号称更稳定、推送到达率更高,但大部分都还是用的免费版。

服务会被杀死
由于 Android 系统的机制,后台推送 Service 会被各种主动的或是被动的行为给杀死,而服务一旦被杀死,意味着就接收不到推送消息。

多个 app 共用一条推送通道
什么意思呢?就是如果有多个 app 都使用了同一家推送服务,那么这些 app 共用一条消息通道,即使你家的 app 推送服务被杀死了,那么只要用户打开了其他集成该推送服务的 app ,你家的推送就能接受到消息。

4. 哪家推送更好呢?

每家的推送服务都号称推送到达率很高,号称自己家的推送服务更不容易被杀死,号称自己的推送更稳定更有保证,然而我要说的是,各家都差不多,技术上你能实现的,别家一样能实现,到达率也都差不多,据我观察平均推送到达率能达到 70% 左右都算不错的了,那么到底该怎么选择呢?

有一点比较特殊的是?有些推送服务有自己家品牌的手机,比如小米有自己的手机,而在 MIUI 系统上小米推送是作为系统级的服务,不会被杀死,毕竟一家人,总不至于傻到把自己家的服务给干掉吧?所以这就是一个巨大的优势了。类似的华为推送服务在自己家的手机系统上也不会被杀死。

各大手机厂商都宣传自己家的手机市场份额第一,然而我要说的是如今市场上的 Android 手机只分小米手机跟其他手机,什么意思?就是小米手机是目前市场份额第一,而且远远领先其他手机,这个在我们自己家 app 的数据上看就是这样,而这里有一份友盟发布的 Android 设备活跃的排名数据

方便大家查看我截了张图:

上图可以看到,前十排名小米占了 7 席,总体小米手机确实是市场份额第一,其次是三星、华为紧随其后,接着 oppo、vivo、魅族平分秋色。

所以小米手机的市场份额,加上小米推送在 MIUI 上不被杀死这一大特性,致使选择小米推送是第一选择。

5. 总结

所以综合下来,如果你的 app 想省事的话那么建议直接集成小米推送。 
如果你的 app 想要把推送更优化下,那么可以集成多个推送服务,针对不同的渠道用不同的推送,比如小米渠道用小米推送,华为渠道用华为推送,其他渠道用信鸽推送等,但是这种也比较麻烦,具体怎么做看你们自己的权衡了。

转自:http://www.androidstar.cn/android-推送到底哪家强/

ANDROID 推送到底哪家强(转)的更多相关文章

  1. Mosquitto搭建Android推送服务(一)MQTT简介

    总体概要: MQTT系列文章分为4部分 1.MQTT简介 2.mosquitto服务器搭建 3.编写Mosquitto的可视化工具 4.使用Mosquitto完成Android推送服务 文章钢要: 对 ...

  2. Android 推送实现

    解决数据同步的问题:常用的方法有2种. (1) 定时去服务器上查询数据,也叫Polling. (2) 手机跟服务器之间维护一个 TCP 长连接,或者使用SMS,当服务器有数据时,实时推送到客户端,也就 ...

  3. Android推送通知指南

      Android推送通知指南 在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是 ...

  4. Android推送技术研究

    前言 最近研究Android推送的实现, 研究了两天一夜, 有了一点收获, 写下来既为了分享, 也为了吐槽. 需要说明的是有些东西偏底层硬件和通信行业, 我对这些一窍不通, 只能说说自己的理解. 为什 ...

  5. Android推送分析

     cpu多核利用能够实现Android推送的吞吐量. 讲明白这点,我们需要了解Android推送的基本原理了.如果实现C(客户端)与server(客户端)实时通讯了.这里有两种思路了: 1.一种是定时 ...

  6. JPush Android 推送如何区分开发、生产环境

    我们 Android 开发者在使用极光推送时可能会发现,在通过官方控制台进行推送时.只有 iOS 区分了开发和生产环境,而 Android 则没有.但实际开发中又确实经常需要针对开发和生产环境分别来推 ...

  7. Android推送方案

    一. 常见的推送原理: 1)轮询(Pull)方式:应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等.而且你还要考虑轮询的频率,如果太慢可能 ...

  8. Android推送使用--文章集锦

    Android之基于百度云推送IM Android实现推送方式解决方案 Android消息推送(一)--AndroidPn(XMPP协议)Demo版到正式上线 采用XMPP协议实现Android推送 ...

  9. 转:Android推送技术研究

    Android推送技术研究 字数5208 阅读4026 评论5 喜欢35 前言 最近研究Android推送的实现, 研究了两天一夜, 有了一点收获, 写下来既为了分享, 也为了吐槽. 需要说明的是有些 ...

随机推荐

  1. s 中日期 转换成时间戳 例如2013-08-30 转换为时间戳

    以前遇到过一个关于时间戳的问题,为了不被大家鄙视,先说一下概念. 具体时间戳怎么定义的我也不清楚,但百度百科中有这么一句:“时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)至当前时 ...

  2. ubuntu16.04安装docker CE

    如需开始在 Ubuntu 上使用 Docker CE,请确保您满足先决条件,然后再安装 Docker. 如需安装 Docker 企业版 (Docker EE),请转至获取适用于 Ubuntu 的 Do ...

  3. 五、Ubuntu 进入vi相关问题

    1.进入vi环境:vim 路径 2.编辑vi:按i键即可 3.保存vi:按esc键,输入冒号,输入wq 回车即可 4.遇到readonly相关问题,可先解除readonly:按esc键,输入:set ...

  4. C++ STL之count函数

    谓词(predicate):是做某些检测的函数,返回用于条件判断的类型,指出条件是否成立. 总结: count : 在序列中统计某个值出现的次数 count_if : 在序列中统计与某谓词匹配的次数 ...

  5. java 两个int类型的数据相除并输出百分号保留两位有效数字

    java代码: public void IntA(int a , int b){ //首先判断分母不能为0 if(b!=0){ folat num = (float) a*100/b; Decimal ...

  6. Using Single Alert For Messages And Confirmation Messages In Oracle Forms With Set_Alert_Button_Property

    Learn how to use single Oracle Form's Alert object for warning/information messages and confirmation ...

  7. 快速销售订单 - OM:销售订单表单:级联行题头更改

    PROFILE OM:销售订单表单:级联行题头更改

  8. PHP 5.4 中经 htmlspecialchars 转义后的中文字符串为空的问题

    PHP 5.4.3 环境中测试了一个在 PHP 5.2 环境下运行正常的程序,却发现本应正常提交一个中文字符串到数据库的代码却提交了一个空字符串,经过排查,该字符串在经 htmlspecialchar ...

  9. 执行sudo命令时的提示语,如何修改?

    如图所示,执行sudo命令,提示语(有中文和英文两个版本): 上面的提示内容是sudo软件原生的内容. 使用下面的方法,有的时候是可行的.sudo -p '提示语' 命令 如果要修改sudo软件原生的 ...

  10. 【GLSL教程】(八)纹理贴图 【转】

    http://blog.csdn.net/racehorse/article/details/6664717 简单的纹理贴图(Simple Texture) 为了在GLSL中应用纹理,我们需要访问每个 ...