一、 成熟的第三方推送平台
(1)、百度云推送
1、功能介绍:百度云推送服务支持推送三种类型的消息:通知、透传消息及富媒体;支持向所有用户或根据标签分类向特定用户群体推送消息;支持更多自定义功能(如自定义内容、后续行为、样式模板等);提供用户信息及通知消息统计信息,方便开发者进行后续开发及运营。
2、高级特性:
1、账户支持
1.1百度账户
开发者可选择使用 oauth2.0 协议接入百度开放平台,所有用户标识使用百度的 userid 作为唯一标识。
1.2无账户登录体系(我们适合使用这一种方式)
开发者无需接入百度账户体系,每个终端直接通过 apiKey 向 Server 请求用户标识 userid,此 id是根据端上的属性生成,具备唯一性,开发者可通过此 id 对应到自己的账户系统,此方式方便灵活。
2、多帐户登录的别名设置(客户端App支持多帐户登录时使用)
3、SDK支持
1、客户端只支持Android
2、服务器端有开发API, 开发包支持的语言有 PHP、Python、Java 及 Node.js。
没有提到收费和强制声明版权的问题。
(2)、极光推送
1、功能介绍:可以推送的对象:全部,某一个人,或者某一群人。
全部很好办,针对某应用“群发”就好了。Portal(JPush向开发者提供的网页后台)与API都支持向指定的 appKey 群发消息。
要指定向某一个特定的人,或者某一群特定的人,则相对复杂。因为对于 JPush 来说,某一个人就是一个注册ID,这个注册ID与开发者App没有任何关系,或者说对开发者App是没有意义的。
如果要对开发者App有意义的某个特定的用户推送消息,则需要:把 JPush 注册用户与开发者App 用户(我们的公网用户或私有部署的用户)绑定起来。
这个绑定有两个基本思路:
1. 把绑定关系保存到 JPush 服务器端
2. 把绑定关系保存到开发者应用服务器中
后者, Android SDK 当前的版本还未支持。
2、高级特性:
1、每条消息需要确认收到
2、多帐户登录的离线消息
3、多帐户登录的别名设置(客户端App支持多帐户登录时使用)
3、SDK支持
1、客户端支持Android、iOS
2、服务器端有开发API, 开发包只支持java
4、使用许可协议
1、价格策略 免费版只支持推送纯文本消息
2、内置JPush SDK的开发者App产品必须在 “关于” 界面和应用程序的许可协议上注明:“包含极光推送,版权所有(c) 2012, 深圳市和讯华谷信息技术有限公司。
二、自己搭建推送平台
目前可以查到的资料是基于开源的推送平台Androidpn的定制方案。
1、 Androidpn是一个基于XMPP协议的java开源Android push notification实现。它包含了完整的客户端和服务器端。它的服务器端基本是在另外一个开源工程openfire基础上修改实现的,客户端需要用到一个基于java的开源XMPP协议包asmack,这个包同样也是基于openfire下的另外一个开源项目smack。
2、 使用XMPP协议(Openfire + Spark + Smack)
三、Google官方推送
Google第一代推送C2DM和现在的GCM
Android版本限制(必须大于2.2版本),该服务在国内不够稳定、需要用户绑定Google帐号,受限于Google。
四、使用HTTP轮循方式
优点:实现简单、可控性强,部署硬件成本低。
缺点:实时性差。