android系统的app消息推送机制

author author     2023-03-06     682

关键词:

参考技术A 参考文章:

http://blog.csdn.net/carson_ho/article/details/52862418

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

手机厂商类:小米推送、华为推送。

第三方平台类:友盟推送、极光推送、云巴(基于MQTT)

BAT大厂的平台推送:阿里云移动推送、腾讯信鸽推送、百度云推送

2. 对比其他推送方式的特点

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

优点:

成本低

上述的推送大多数是免费的,假如自己实现则消耗过多资源(开发成本和后台管理、统计成本)

消息到达率高

如果一个手机里有多个App使用了同一家推送服务,那么这些App将共用一条消息通道,即使你家的App推送服务被杀死了,那么只要用户打开了其他集成该推送服务的App,你家的推送就能到达用户

缺点

安全性低

使用别人的服务器,所以你懂的。

服务会被杀死

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

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

第三方服务基本都具备免费、和到达率高的特点

那么应该如何选择呢?我们来分别看一下第三方推送各种方式的优点:

3.1 手机厂商推送

请记住一个潜规则:操作系统是不会杀死属于自己品牌的推送服务。

手机厂商的推送服务在自家的手机上属于系统级别的服务,这意味着系统不会杀死自家的推送服务

比如说,Android原生系统是不会杀死C2DM消息推送服务,MIUI系统是不会杀死小米的推送服务。

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

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

下面一些应用可以从侧面来证明我的推断:

腾讯新闻使用的小米推送,没有使用自己家的信鸽推送

淘宝使用了自家的阿里云推送,同时还集成了小米推送

百度视频和爱奇艺使用的是小米推送,没有用自家的百度推送

官网截图 - 集成应用:

如果希望进一步提高推送的效果,其实可以集成多个手机厂商的推送服务

比如小米渠道用小米推送,华为渠道用华为推送,但这样的实现成本会大一些

3.2 第三方平台类

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

这意味着假设你接入了友盟推送,而恰好今日头条也接入了友盟。

有一天你的App被杀死了,但这时用户启动了今日头条,那么推送系统也就会通过共享的推送通道顺便把你推送消息送达到手机上,然后还可能把你的进程也唤醒(被“保活”了)。

所以说,关于如何选择第三方平台类的推送,推送平台的规模效应就很重要了。

那如何得知他们的规模和市场份额呢?按个人经验,主要看两点:

问内部的朋友。

看推送平台的合作客户里有哪些大的app - 参考对应官网的合作案例

3.3 BAT大厂的推送

BAT大厂其实并没有什么优势,同时谨记:

不要以为用了腾讯信鸽推送,就能占上微信的光保证你的App永远内部被杀死。

说个题外话,手机淘宝除了自家的阿里云的移动推送,同时也使用其它的第三方推送平台啊(比如友盟推送)。

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

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

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

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

如果用户群体广泛、希望实现成本低,可以考虑只使用单一第三方平台类的推送(极光、友盟blabla,选一个规模效应最大的)

如果用户群体广泛、不在意实现成本,个人建议:

对于小米手机,使用小米推送;

对于华为手机,使用华为推送;

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

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

大家可以根据自己的使用场景来进行消息推送平台的选择。

5. 推送消息类别的选择

5.1 推送消息的类别

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

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

不会继续被传递到App

透传消息:该类消息在被送达用户的设备后,还会继续传递到App

通过回调App的某个BroadcastReceiver的形式将消息传递到App内部。然后由App决定如何处理和显示这个消息。

所以透传消息不一定会以系统通知栏的形式进行推送,由程序猿自定义

5.2 消息类别的区别与特点

二者的区别在于:透传消息在整个消息传递过程中比通知栏消息多了一步-传递到App

通知栏消息的优点:送达率高

因为透传消息在整个消息传递过程中比通知栏消息多了一步-传递到App,因此透传消息就增加一些被系统限制的概率,给系统杀死的概率就高一些,所以说,通知栏消息比透传消息应该能提供更好的送达率。

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

在一些 Android 系统(如 MIUI)中,受到系统自启动管理设置的限制,应用不能在后台自启动

在这类系统中,如果在发送消息的时候对应的应用没有被启动,透传类消息将不能顺利送达。

因此,对于对送达率要求很高的消息,建议尽量采用通知栏提醒的方式推送消息

透传消息的优点:对消息操作程度高 & 自定义程度高

提供了对消息数据的更灵活的操纵能力。

App如果仅仅通过通知栏消息,是无法接触到消息数据本身的。

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

所以大家可以根据不同的使用场景来对推送消息类别进行选择了。

app消息推送及疑问解答

消息推送是每一个APP必不可少的一部分就baiwei而言:IOS的消息推送用的苹果的服务器APNSAndroid用的极光推送(JPush)它们都是免费的IPhone(APPLE)的工作机制可以简单的概括为下图:iPhone自3.0之后推出消息推送机制,原理是消息由... 查看详情

消息推送平台高可用实践(上)

...广播、私信、组播、附件等多种消息推送方式,覆盖IOS、Android、PC、Web等多种终端,并根据应用特定需求制定各种解决方案。平台支持水平扩展,支持C5000K高并发下的实时消息推送,通过动态负载均衡、隔离部署、LXC虚拟化和监... 查看详情

android项目必备app消息推送(代码片段)

...2DM2.轮询3.SMS信令推送4.MQTT协议5.XMPP协议6.使用第三方平台Android中MQTT的使用1.集成2.具体代码3.项目地址前言今天来讲讲推送这件小事,事虽小,要做好却不容易。推送难,难于上青天。我们在讨论Android手机上的推送时... 查看详情

使用极光推送实现分组发送和服务端集成

...用开发中越来越重要,几乎成为所有App必备的功能,由于Android本身没有消息推送机制,通常采用的是基于XMPP协议的推送,但这种开发很麻烦,因此在市场上应运而生了提供消息推送服务的诸多产品,例如:百度云、个推、极光... 查看详情

使用极光/友盟推送,app进程杀死后为啥收不到推送

Android,app进程处于杀死状态,就相当于你手机处于关机了/没有信号的状态,是接不了电话和短信的。要收到推送,自然是让App重启(开机),重新与极光服务器建立起连接(有信号)然后要想的是,怎么让App在杀死后能自动重... 查看详情

消息推送可以推送啥内容?

...送什么内容?消息推送的内容主要包括以下几种类型:1.系统消息通知当APP用户相关状态或者系统功能状态变化时(如用户订单通知、交易提醒、物流通知、升级提醒等),可对用户进行及时告知2.内容订阅推送帮助内容资讯类... 查看详情

android项目必备(三十八)-->app消息推送(代码片段)

...2DM2.轮询3.SMS信令推送4.MQTT协议5.XMPP协议6.使用第三方平台Android中MQTT的使用1.集成2.具体代码3.项目地址前言今天来讲讲推送这件小事,事虽小,要做好却不容易。推送难,难于上青天。我们在讨论Android手机上的推送时... 查看详情

androidbroadcastreceiver详解(代码片段)

1.Android广播机制概述Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。广播作为Android组件间的通信方式,可以使用的场景如下:1)同一app内部的同一组件内的消... 查看详情

消息推送的作用

...可以先免费体验下个推消息推送服务。个推消息推送支持Android和iOS等平台,SDK接入方便快捷。在消息推送的基本性能上,如省电省流量、长链接稳定性、推送速率、安全性等方面具有领先业内的优势。欢迎您前往个推开发者中... 查看详情

android——broadcastreceiver广播机制(自定义广播)(代码片段)

普通广播可见:Android——广播1.概述Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。广播作为Android组件间的通信方式,可以使用的场景... 查看详情

android——broadcastreceiver广播机制(自定义广播)(代码片段)

普通广播可见:Android——广播1.概述Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。广播作为Android组件间的通信方式,可以使用的场景... 查看详情

android友盟推送集成

...题,记录一下。首先讲一下实现原理,我们用的是友盟。Android比iOS要麻烦很多。友盟集成是需要后端配合的,具体就是后端调用友盟的接口,向友盟推送一条消息,然后友盟再向在他们平台注册过的app发送一条消息,我们要做... 查看详情

移动互联网消息推送原理:长连接+心跳机制(mqtt协议)

...长连接呢:   在写之前,我们首先了解一下为什么Android维护长连接需要心跳机制,首先我们知道,维护任何一个 查看详情

消息推送平台高可用实践(上)

...广播、私信、组播、附件等多种消息推送方式,覆盖IOS、Android、PC、Web等多种终端,并根据应用特定需求制定各种解决方案。平台支持水平扩展,支持C5000K高并发下的实时消息推送,通过动态负载均衡、隔离部署、LXC虚拟化和监... 查看详情

ios推送手机消息背后的技术(代码片段)

...打开了通知权限就能够收到推送消息。开发者通过调用iOS系统方 查看详情

自定义ios中推送消息提示框

 看到标题你可能会觉得奇怪推送消息提示框不是系统自己弹出来的吗?为什么还要自己自定义呢?因为项目需求是这样的:最近需要做一个客服系统包括店铺客服和官方客服两个模块如果用户当前不在客服界面的时候要求无... 查看详情

如何采用mqtt协议实现android消息推送

使用一个代理服务器messagebroker,客户端client连接上这个服务器,然后告诉服务器,可以接收哪些类型的消息,同时client也可以发布自己的消息,这些消息根据协议的内容,可以别的client获取。这样就实现了消息推送。消息推送... 查看详情

即时通讯开发android端消息推送总结

为什么要研究Android推送技术?主要还是毕业设计要做一个即时通信app,我是不喜欢做什么社交app的,也就象牙塔里的人想得出来,说实话有这功夫还不如钻研一个小技术点,把一个点研究透彻,比搞个大而全,还无用的东西好得多,不过谁... 查看详情