百度云?极光?个推?

作为Android开发人员,在做应用开发时我们常常会碰到消息推送,因为Android不像苹果,本身没有消息推送机制,通常采用的是基于XMPP协议的推送,但这种开发很麻烦,因此在市场上应运而生了一种封装好的推送方式:极光推送,它的出现大大节省了开发时间,极光推送一度占领移动开发的市场,但是最近,百度推出了新的推送方式:百度云推送,在市场的反应也相当不错,作为开发者,有时候不知道选择哪一种方式的推送合适,下面就将详细介绍下这两者的区别和优势,希望你能从中找到答案。

 

百度云推送的机制和特点:
1.单播消息推送
描述

开发者向应用的特定终端或特定用户推送消息。 特定终端对于应用来说,就是安装了应用的一台具体的设备。 而一个用户可能有多个端,在某些应用场景下,我们希望消息是针对用户的——应用的同一个用户在他的所有终端上都能收到消息,这时候我们就需要向特定用户推送消息。

解决思路

(1)向应用的特定终端推送消息

一个channel id指定一个终端,因此在这种需求下,开发者需要通过服务端API,向一个特定channel id推送消息。在推送之前,客户端应用通过绑定接口的返回值获取到channel id,并通过网络等手段发送给开发者,开发者需自行维护channel id。

例如,Android客户端,在调用了startWork之后,自定义消息 receiver将会收到返回值,其中包含了channel id、user id等信息。

(2)向应用的特定用户推送消息

云推送用user id来表示用户,因此在这种需求下,开发者需要通过服务端API,向一个特定user id推送消息。和channel id获取方式类似,客户端应用通过绑定接口的返回值获取到user id。开发者需要自行维护user id。

应用场景举例

在线问答应用。用户A用手机发表一个问题,问题的解答并不是实时的。假设在第二天用户B发表了第一个解答,这时需要将答案单独推送给A。

解决方案

用户A发表问题时,记录问题id及其对应的A的user id(或channel id)。用户B发表解答时,通过服务端API向问题id对应的user id(或channel id)推送解答。

2.用户分组的消息推送
描述

开发者向应用的符合特定分类条件的若干用户的集合推送消息。广播是分组推送的特例,它向应用的所有用户(同时也是所有端)推送消息。

解决思路

云推送通过Tag(标签)这种技术方式来实现用户分组的功能。例如,对于分类信息的应用,一个用户观看了体育栏目,就给该用户打一个Tag——sport。6月的某一天NBA总决赛热火夺冠了,则向sport这个Tag推送一条及时的夺冠新闻。

应用场景举例

阅读应用。对不同阅读喜好的人群推送不同类别的新图书广告。

解决方案

应用提供喜好设置页面,用户勾选不同的类别,触发对应Tag的设置。或者用户阅读了某个类别的图书,触发对应Tag的设置。在服务端,给特定类别图书的Tag推送新书广告。

3.使用自己的账户系统或百度账户
描述

开发者可以使用自己的账户体系开发应用,或者应用就是无账户的。开发者也可选择使用百度账户作为应用账户系统的接入。

解决思路

(1)使用自己的账户系统或者无账户系统

这两种情况,云推送都是无法理解账户信息的,所以对于云推送来说都属于无账户体系。
云推送通过终端标识(channel id)和应用标识(APIKey)来唯一确定一个应用的一个特定端。应用的每个端都是不同的用户,拥有不同的user id。 客户端的绑定方式,用Android API举例:

PushManager.startWork(Context, LOGIN_TYPE_API_KEY, apiKey)

(2)使用百度账户系统

云推送和百度账户系统是连通的,应用的所有用户将使用百度的user id作为唯一标识。不同的端使用同一个用户百度账户登录,获得的user id是一样的。这种方式可以实现对用户的多个端做消息推送。
百度账户的客户端绑定使用用户AccessToken作为验证凭证,用户AccessToken的获得需要百度账户登录界面的辅助,具体使用可以参看客户端SDK demo或者百度账号连接官方文档。
同样的,客户端的绑定方式,用Android API举例:

PushManager.startWork(Context, LOGIN_TYPE_ACCESS_TOKEN, UserAccessToken)

(2) 百度账号连接官方文档

4.单服务单通道的端上实现
云推送的Android SDK,是通过后台service和socket长连接机制来实现的。从消息时效性、耗电量、网络流量等因素考虑,这是目前最好的实现方式。

在同一台设备安装了多个使用推送的应用的情况下,如果每个应用都执行独立的后台service,且各自建立独立的长连接,这无疑是系统资源的巨大浪费。内存使用、耗电量、网络流量等关键因素都将以接近与应用数正比的倍数增长。

在这个背景下,云推送实现了单服务单通道的机制。同一台设备上,云推送服务的资源消耗不受集成该服务的应用数量影响。任何时刻,只会运行一个后台service和维持一个socket长连接。

应用的初始化、tag等接口调用,将通过intent方式发送到后台运行的service处理。service接收到推送消息时,将根据消息中指定 的发送对象,通过intent,以指定目标应用包名的方式,发送私有消息给应用。应用无法接收到不属于自己的消息,也无法通过冒充截获。

示意图:

百度云?极光?个推?

极光推送的机制和特点:
极光推送正是一个整合了Android推送、iOS推送的统一推送服务平台。作为国内最专业的第三方移动消息推送服务提供商,极光推送目前正为数千 企业和开发者提供稳定的毫秒级送达移动消息推送方案,已经覆盖了上亿 Android和 iPhone终端。目前积累应用开发者超过10000个,累计接入应用超过12000个。覆盖独立终端突破1亿8000万台。日活跃推送用户超过4000 万。根据统计数据,有效使用极光推送能够在3个月内提升App留存率 100%, 提升App活跃度更是高达 500%。而实现这些提升,开发者只需要花费3分钟进行SDK集成,大大降低了开发者的独立开发和维护推送功能的难度。 http://docs.jpush.cn官方wiki文档有SDK集成指南 API描述及代码示例。极光推送会通过blog分享推送相关技术。专门的问答系统,开发者可以提问一切有关使用极光推送产品的问题。

极光推送提供了哪些功能

推送通知

使你的应用程序保持高注意力

即使用户没有打开应用程序,也能够推送通知到达用户手机。您可以即时向用户推送活动提示、动态更新、积分信息等通知。

推送自定义消息

强大的自定义消息推送通道

开发者可以推送自定义的消息内容。JPush SDK 把内容完全转给开发者应用程序,由开发者应用程序去处理自定义消息。

管理和推送WebPortal

灵活地根据需要定制推送服务

管理Portal上的推送助手,方便快速推送,普通用户都可操作。

服务器端API

极光推送提供了基于HTTP协议的推送API,API包含全部的推送功能,开发者完全可以基于此API开发独立的推送页面或者将推送功能集成到现有的管理系统内。

统计图表

推送效果直观呈现

推送到达了多少?到达后,用户有没有点击打开应用?打开应用后,用户逗留的时间有没有延长?直观的对比图表,让你轻松地评估推送效果。

极光推送的应用场景

极光推送按照接受者范围的不同提供了广播,标签,别名,IMEI(Android Only)四种推送方式,不同的使用场景和开发者可以根据业务需求,

广播

按标签(tag)推送

按别名(alias)推送

按IMEI推送(Android Only)

定时推送

个推公共平台云推送服务的机制和特点
个信互动(北京)网络科技有限公司成立于2010年7月,位于北京、杭州两地。现有100余位员工。

公司产品包括:国内最早的手机及时聊天类应用--个信,以及最早的PC TO PHONE软件—八爪推送。2012年,公司全面开放其核心竞争力--推送技术,面向公众提供专业的手机推送解决方案,即个推平台,成为国内该领域的先驱和最专业服务商。

作为一个专注于移动推送技术的服务商,个推已经为新浪微博、百度等公司提供推送服务。通过个推的推送解决方案,开发者可以在应用推送功能上节省开发成本,并达到节省公司资源、保证用户推送质量,省用户流量和电能的效果。开发者还可获得推送的BI数据。

个推平台专注提供移动设备长连接SDK和服务端接入的整体解决方案。目前个推平台主要提供两种服务模式,消息群发模式,提供群发管理后台,满足消息群发需求;业务整合模式,提供服务端API接口,可以与客户已有业务系统深度整合。

技术原理
首先我们来看一下组成一个推送系统的几个要素

1. 个推SDK:

以jar的方式出现,集成于第三方客户端,解析第三方下行的数据,并把结果透传给第三方客户端;也可以上行第三方定制的客户端信息。

2. 个推服务器:

一侧负责维护与成千上万的个推SDK的长时连接,另一侧与第三方服务器对接,将第三方定制数据下行推送至个推SDK。

3. 第三方服务器:

数据推送的发起者,通过对接个推服务器,将数据发送至第三方客户端。

4. 第三方客户端:

第三方集成个推SDK的客户端,推送数据正真的接收者和展现者。

以上是个推推送系统中的四个不同角色,看起来比较抽象,可以通过以下图片来加强理解:

说明:

AppID:应用ID,第三方在个推系统注册帐号并创建生成的唯一的应用标识。

ClientID:用于标识客户端身份,由第三方客户端获取并保存到第三方服务端。

UID:一般为第三方系统帐号体系中的用户标识。第三方服务端一般需要保存UID和ClientID的映射关系,进行消息推送时,通过UID查找到相应的ClientID,便可进行定向推送了。

百度云推送,极光推送和个推各自的优势是什么?
极光推送功能优势:
1、高效稳定的推送通知

为合作伙伴提供长连接SDK,开发者的服务消息可以推送到其客户端。使你的应用程序保持高注意力,即使用户没有打开应用程序,也能够推送通知到达用户手机。您可以即时向用户推送活动提示、动态更新、积分信息等通知。100万并发量不超过40秒,水平服务器架构,任何单点失效都并不会影响推送。

2、*度高,推送自定义消息。

强大的自定义消息推送通道。开发者可以推送自定义的消息内容。JPush SDK 把内容完全转给开发者应用程序,由开发者应用程序去处理自定义消息。

3、灵活推送工具

灵活地根据需要进行推送。管理Portal上的推送助手,方便快速推送,普通用户都可操作。另外也提示API调用方式,灵活强大。

4.推送平台技术架构先进,经过考验的大规模用户 Push 平台

由于之前开发过IM应用,极光在消息推送业务上有丰富的技术沉淀期,并且不断地优化系统,满足快速的业务增长。

免费推送服务

推送的用户数量没有限制,推送的消息条数也没有限制。

方便集成的SDK及良好的文档和技术支持体系

android 3分钟demo

ios 简单配置

客户端SDK以非常低的代价保持连接,电量、流量消耗少。

推送内容的多少是由开发者决定的,网络状况不稳定也会对电量造成影响。在不考虑推送的内容和网络影响前提下。理论数据平均值为:流量消耗 20K/天,电量消耗 30mAh/天

5、专业图表、推送精准化

推送效果直观呈现。推送到达了多少?到达后,用户有没有点击打开应用?打开应用后,用户逗留的时间有没有延长 ? 直观的对比图表,让你轻松地评估推送效果。

这是极光推送应用后的数据趋势图:

百度云?极光?个推?

云推送平台具备的优势
高安全性

平台在服务端与SDK进行通讯时进行了数据加密,保证客户数据的隐私安全。同时,个推平台还支持客户对传输数据自主加密,满足高安全性客户的需求。

高可靠性

平台服务器部署在IDC核心机房,三线接入,保证不同运营商移动设备接入的稳定性。个推平台采用分布式架构部署,不仅系统容量可灵活扩容,还可以提供99.9% SLA。个信专业的运维团队维护,消息到达率超过96%。

低成本

平台专注推送服务领域的研究,单台设备支持100-300万用户在线(根据单台设备配置会有波动),平均成本控制业界领先。

出乎意料的快速,瞬间送达

平台的消息投递延时小于0.2s,无论何时何地,用户移动设备有网络即可送达。

专为手机优化,省电省流量

平台采用自主研发的独有协议,比XMPP更适合移动设备使用,符合4S标准(小巧、省电、省流量、稳定)。实测移动设备空载耗电每日15-50mAh,空载流量0.8-1.2M/月。

个推平台具备的优势
高安全性

个推平台在服务端与SDK进行通讯时进行了数据加密,保证客户数据的隐私安全。同时,个推平台还支持客户对传输数据自主加密,满足高安全性客户的需求。

高可靠性

个推平台服务器部署在IDC核心机房,三线接入,保证不同运营商移动设备接入的稳定性。个推平台采用分布式架构部署,不仅系统容量可灵活扩容,还可以提供99.9% SLA。个信专业的运维团队维护,消息到达率超过96%。

低成本

个推平台专注推送服务领域的研究,单台设备支持100-300万用户在线(根据单台设备配置会有波动),平均成本控制业界领先。

出乎意料的快速,瞬间送达

个推平台的消息投递延时小于0.2s,无论何时何地,用户移动设备有网络即可送达。

专为手机优化,省电省流量

个推平台采用自主研发的独有协议,比XMPP更适合移动设备使用,符合4S标准(小巧、省电、省流量、稳定)。实测移动设备空载耗电每日15-50mAh,空载流量0.8-1.2M/月。

易于实施

个推平台移动设备SDK集成半天即可完成,使用推送管理后台,当天即可零开发群发消息。同时,个推平台也提供完善成熟的服务API可以与客户已有业务系统紧密结合。

强大的分析报表

个推平台可以提供应用的留存用户,在线用户等核心数据,并会不定期提供行业数据分析报告及客户的行业排名指数。对于消息投递到用户后的访问行为,个推平台也会提供精准的效果评估报告。

小编总结:
其实无论选哪种方式最适合我们的才是最好的,以上就是这两种推送的区别和各自的优势,哪种是你需要的呢,根据自己的需求来决定,是最好的选择!

百度云?极光?个推?

上一篇:session(概念、session对象的获取、删除、验证)


下一篇:小程序 页面 可以用Component 代替Page