Android 消息推送:第三方消息推送平台 详细解析

前言

  • 消息推送在 Android 开发中应用的场景是愈来愈多了,好比说电商产品进行活动宣传、资讯类产品进行新闻推送等等,以下图:

推送消息截图

  • 本文将介绍 Android 中实现消息推送的第三方推送的详细解决方案

阅读本文前,建议先阅读我写的文章:史上最全解析Android消息推送解决方案安全


目录

目录


1. 主流的第三方推送平台分类

  • 手机厂商类:小米推送、华为推送。
  • 第三方平台类:友盟推送、极光推送、云巴(基于MQTT)
  • BAT大厂的平台推送:阿里云移动推送、腾讯信鸽推送、百度云推送

2. 对比其余推送方式的特色

其余推送方式还有:C2DM、轮询、SMS、MQTT协议、XMPP协议等等,相对于这些推送方式,第三方推送方式的特色分别是:服务器

  • 优势:微信

    1. 成本低 上述的推送大多数是免费的,假如本身实现则消耗过多资源(开发成本和后台管理、统计成本)
    2. 消息到达率高 若是一个手机里有多个App使用了同一家推送服务,那么这些App将共用一条消息通道,即便你家的App推送服务被杀死了,那么只要用户打开了其余集成该推送服务的App,你家的推送就能到达用户
  • 缺点app

    1. 安全性低 使用别人的服务器,因此你懂的。
    2. 服务会被杀死 因为Android系统的机制,后台推送 Service 会被各类主动的或是被动的行为给杀死,而服务一旦被杀死,意味着就接收不到推送消息。

3. 第三方推送服务方式的特色

  • 第三方服务基本都具有免费、和到达率高的特色
  • 那么应该如何选择呢?咱们来分别看一下第三方推送各类方式的优势:

3.1 手机厂商推送

请记住一个潜规则:操做系统是不会杀死属于本身品牌的推送服务。post

  1. 手机厂商的推送服务在自家的手机上属于系统级别的服务,这意味着系统不会杀死自家的推送服务
  2. 好比说,Android原生系统是不会杀死C2DM消息推送服务,MIUI系统是不会杀死小米的推送服务。

当今市场上的Android手机系统份额最高是MIUI系统,即小米(具体排名请看http://www.umindex.com/)阿里云

由于:免费、到达率高且在Android系统市场份额第一的MIUI系统上不被杀死。因此,若是要选择手机厂商的推送服务,请选择小米推送做为第三方平台实现推送服务操作系统

下面一些应用能够从侧面来证实个人推断:3d

  • 腾讯新闻使用的小米推送,没有使用本身家的信鸽推送
  • 淘宝使用了自家的阿里云推送,同时还集成了小米推送
  • 百度视频爱奇艺使用的是小米推送,没有用自家的百度推送
  • 官网截图 - 集成应用:

集成应用

  1. 若是但愿进一步提升推送的效果,其实能够集成多个手机厂商的推送服务
  2. 好比小米渠道用小米推送,华为渠道用华为推送,但这样的实现成本会大一些

3.2 第三方平台类

请记住一个规则:推送系统会共享一条推送渠道code

  1. 这意味着假设你接入了友盟推送,而刚好今日头条也接入了友盟。
  2. 有一天你的App被杀死了,但这时用户启动了今日头条,那么推送系统也就会经过共享的推送通道顺便把你推送消息送达到手机上,而后还可能把你的进程也唤醒(被“保活”了)。

因此说,关于如何选择第三方平台类的推送,推送平台的规模效应就很重要了。 那如何得知他们的规模和市场份额呢?按我的经验,主要看两点:cdn

  • 问内部的朋友。
  • 看推送平台的合做客户里有哪些大的app - 参考对应官网的合做案例

3.3 BAT大厂的推送

BAT大厂其实并无什么优点,同时谨记:

  • 不要觉得用了腾讯信鸽推送,就能占上微信的光保证你的App永远内部被杀死。
  • 说个题外话,手机淘宝除了自家的阿里云的移动推送,同时也使用其它的第三方推送平台啊(好比友盟推送)。

4. 如何选择第三方平台推送服务?

主要从用户类别+实现成本+渠道来选择不一样的使用场景

  1. 若是用户群体精准(使用小米手机或华为手机居多),能够考虑只集成对应手机厂商的推送;

注意:单一的手机厂商也能工做,好比小米推送在非小米手机上固然也能工做,只不过不是系统级别的服务了,容易被杀死。

  1. 若是用户群体普遍、但愿实现成本低,能够考虑只使用单一第三方平台类的推送(极光、友盟blabla,选一个规模效应最大的)

  2. 若是用户群体普遍、不在乎实现成本,我的建议:

  • 对于小米手机,使用小米推送;
  • 对于华为手机,使用华为推送;
  • 对于其余手机,只使用单一第三方平台类的推送(极光、友盟blabla,选一个规模效应最大的)

让不一样的推送运行在各自擅长的环境里,最大化实现推送的到达率和产品的存活率

你们能够根据本身的使用场景来进行消息推送平台的选择。


5. 推送消息类别的选择

5.1 推送消息的类别

一般第三方推送平台都支持两种推送消息类型:通知栏消息和透传消息。

  • 通知栏消息:该类消息在被送达用户的设备后,直接以系统通知栏的形式展现给用户

不会继续被传递到App

  • 透传消息:该类消息在被送达用户的设备后,还会继续传递到App
  1. 经过回调App的某个BroadcastReceiver的形式将消息传递到App内部。而后由App决定如何处理和显示这个消息。
  2. 因此透传消息不必定会以系统通知栏的形式进行推送,由程序猿自定义

5.2 消息类别的区别与特色

  • 两者的区别在于:透传消息在整个消息传递过程当中比通知栏消息多了一步-传递到App
  • 通知栏消息的优势:送达率高 由于透传消息在整个消息传递过程当中比通知栏消息多了一步-传递到App,所以透传消息就增长一些被系统限制的几率,给系统杀死的几率就高一些,因此说,通知栏消息比透传消息应该能提供更好的送达率。

咱们来看下小米推送的官方文档描述:

  1. 在一些 Android 系统(如 MIUI)中,受到系统自启动管理设置的限制,应用不能在后台自启动
  2. 在这类系统中,若是在发送消息的时候对应的应用没有被启动,透传类消息将不能顺利送达。
  3. 所以,对于对送达率要求很高的消息,建议尽可能采用通知栏提醒的方式推送消息
  • 透传消息的优势:对消息操做程度高 & 自定义程度高
  1. 提供了对消息数据的更灵活的操纵能力。

App若是仅仅经过通知栏消息,是没法接触到消息数据自己的。

  1. 可自定义通知提醒的样式(包括提示样式、提示形式如声音等等)

因此你们能够根据不一样的使用场景来对推送消息类别进行选择了。


6. 总结


请点赞!由于你的鼓励是我写做的最大动力!


欢迎关注carson_ho的微信公众号

示意图

示意图
相关文章
相关标签/搜索