百度云,极光,个推的区别2013-07-1615:0551cto编辑张叶青51cto整理字号:T|T作为Android开发人员,在做应用开发时我们常常会碰到消息推送,因为Android不像苹果,本身没有消息推送机制,通常采用的是基于XMPP协议的推送,但这种开发很麻烦,因此在市场上应运而生了一种封装好的推送方式:极光推送,它的出现大大节省了开发时间,极光推送一度占领移动开发的市场,但是最近,百度推出了新的推送方式:百度云推送,在市场的反应也相当不错,作为开发者,有时候不知道选择哪一种方式的推送合适,下面就将详细介绍下这两者的区别和优势,希望你能从中找到答案。AD:2014WOT全球软件技术峰会北京站课程视频发布百度云推送的机制和特点:1.单播消息推送描述开发者向应用的特定终端或特定用户推送消息。特定终端对于应用来说,就是安装了应用的一台具体的设备。而一个用户可能有多个端,在某些应用场景下,我们希望消息是针对用户的——应用的同一个用户在他的所有终端上都能收到消息,这时候我们就需要向特定用户推送消息。解决思路(1)向应用的特定终端推送消息一个channelid指定一个终端,因此在这种需求下,开发者需要通过服务端API,向一个特定channelid推送消息。在推送之前,客户端应用通过绑定接口的返回值获取到channelid,并通过网络等手段发送给开发者,开发者需自行维护channelid。例如,Android客户端,在调用了startWork之后,自定义消息receiver将会收到返回值,其中包含了channelid、userid等信息。(2)向应用的特定用户推送消息云推送用userid来表示用户,因此在这种需求下,开发者需要通过服务端API,向一个特定userid推送消息。和channelid获取方式类似,客户端应用通过绑定接口的返回值获取到userid。开发者需要自行维护userid。应用场景举例在线问答应用。用户A用手机发表一个问题,问题的解答并不是实时的。假设在第二天用户B发表了第一个解答,这时需要将答案单独推送给A。解决方案用户A发表问题时,记录问题id及其对应的A的userid(或channelid)。用户B发表解答时,通过服务端API向问题id对应的userid(或channelid)推送解答。2.用户分组的消息推送描述开发者向应用的符合特定分类条件的若干用户的集合推送消息。广播是分组推送的特例,它向应用的所有用户(同时也是所有端)推送消息。解决思路云推送通过Tag(标签)这种技术方式来实现用户分组的功能。例如,对于分类信息的应用,一个用户观看了体育栏目,就给该用户打一个Tag——sport。6月的某一天NBA总决赛热火夺冠了,则向sport这个Tag推送一条及时的夺冠新闻。应用场景举例阅读应用。对不同阅读喜好的人群推送不同类别的新图书广告。解决方案应用提供喜好设置页面,用户勾选不同的类别,触发对应Tag的设置。或者用户阅读了某个类别的图书,触发对应Tag的设置。在服务端,给特定类别图书的Tag推送新书广告。3.使用自己的账户系统或百度账户描述开发者可以使用自己的账户体系开发应用,或者应用就是无账户的。开发者也可选择使用百度账户作为应用账户系统的接入。解决思路(1)使用自己的账户系统或者无账户系统这两种情况,云推送都是无法理解账户信息的,所以对于云推送来说都属于无账户体系。云推送通过终端标识(channelid)和应用标识(APIKey)来唯一确定一个应用的一个特定端。应用的每个端都是不同的用户,拥有不同的userid。客户端的绑定方式,用AndroidAPI举例:PushManager.startWork(Context,LOGIN_TYPE_API_KEY,apiKey)(2)使用百度账户系统云推送和百度账户系统是连通的,应用的所有用户将使用百度的userid作为唯一标识。不同的端使用同一个用户百度账户登录,获得的userid是一样的。这种方式可以实现对用户的多个端做消息推送。百度账户的客户端绑定使用用户AccessToken作为验证凭证,用户AccessToken的获得需要百度账户登录界面的辅助,具体使用可以参看客户端SDKdemo或者百度账号连接官方文档。同样的,客户端的绑定方式,用AndroidAPI举例:PushManager.startWork(Context,LOGIN_TYPE_ACCESS_TOKEN,UserAccessToken)(2)百度账号连接官方文档4.单服务单通道的端上实现云推送的AndroidSDK,是通...