一、Android Push功能现状

Push能够有效地激活用户更多地使用 App,目前大多数应用都有Push功能。

Push功能依赖于Push服务,现在主流的智能手机操作系统都集成了免费的Push服务,如IPhone的APNS(Apple Push Notification service)、windowsphone的MPNS(Microsoft Push Notification service,Android的GCM (GoogleCloud Messaging)。

但是由于Android操作系统是开源的,很多手机厂商都没有预装Google服务,并且Google服务在国内不稳定,所以国内无法使用GCM实现Push功能,这种情况下我们只能使用第三方的Push服务或自己开发Push服务。

开发及时的Push服务首先要考虑到性能、并发量、安全性等因素,它是一个很复杂的系统,当然如果App活跃用户数很少,也可以降低复杂性。

国内应用开发商大多自己部署一个简单的Http服务,客户端每隔一段时间到服务器查询,这种方式的缺点也是显而易见的

Ø  HTTP请求的数据包较大,会增加数据流量

Ø  不够及时,如果轮询的时间间隔太短就会很耗电、耗流量

二、第三方Push服务介绍

由于上述一些原因,很多的第三方Push服务应运而生,服务提供商大多数是国外的

1、 Urban Airship

Urban Airship是业界最知名的一个提供推送服务的平台,每月的推送数量达到5.2亿次,平均每分钟的信息发送量约为1.3万次。

除了基本推送服务外,UrbanAirship还提供Rich Push:让Push信息可以带HTML、视频、音频等多媒体信息。此外,UrbanAirship还为iOS和Android提供In-App Purchase(IAP)服务,帮助开发者处理内容存放和安全支付等问题。Urban Airship提供了一个管理后台。开发者在这里不仅能用信息编辑界面来发送Push,还可以监测Push消息的传达情况,观察用户是否产生了交互等统计信息。

推送服务支持以下三个平台:

Ø  IOS

Ø  Android

Ø  BlackBerry

收费标准(按月活跃用户数计费):

0 to10,000users              $199

10,001to 25,000 users     $499

25,001to 50,000 users     $999

50,001to 75,000 users     $1,499

75,001to 100,000 users  $1,999

活跃用户数超过100,000,按0.24$计费

详细的收费标准请参考:http://urbanairship.com/pricing/

有网友说只要每月推送量小于一百万条就免费,在官网没有找到,估计这是以前的政策

技术支持

官方提供客户端和Server的SDK,很方便调用,并且有完善的文档

官方网站:http://urbanairship.com/

2、 push.io

push.io也是一个很出名的推送服务平台,已经成功推送了60亿次通知,当然和Urban Airship比还差一大截。

支持以下平台:

Ø  iOS

Ø  Android

Ø  Windows Phone

Ø  Nokia Ovi and S40

收费标准:

0.01$/活跃用户/月

250k users享受12.5%的优惠

500k users 享受25%的优惠

超过1百万users享受50%的优惠

具体收费标准请参考:http://push.io/pricing/

技术支持:

提供SDK和文档

不足:

Android SDK使用GCM服务实现的,所以不适合我们使用

官方网站:http://push.io

3、 Pubnub

pubnub是一个云端即时消息服务,通过它我们可以很方便地创建自己的即时应用。

支持的平台:

由于是跨平台的,所以支持所有平台

收费标准:

25 $/月包含每天2500活跃用户

然后每发送1百万条消息需要额外支付1$,每增加1000个活跃用户需额外支付10$

不足:

支持http和websocket(长连接,但是数据是通过http协议传输的)协议,由于java没有Websocket协议,所以是使用Http协议轮询,当然也可以用Socket模拟Websocket。

官方提供的androidSDK是使用Http协议,javascript SDK使用WebSocket协议。

另外,pubnub的每条消息限制在1800字节

官方网站:http://www.pubnub.com/

4、 极光推送

极光推送是国产的一个免费的推送服务,架构非常类似Urban Airship,很多后台网页和操作也基本上和Urban Airship一样。

支持的平台:

Ø  Android

Ø  IOS

收费标准:

免费

技术支持:

提供sdk和开发文档

不足:

由于刚上线,性能、并发量、安全性等方面还未知,而且没有承诺永久免费,所以还是有风险的

官方网站:http://jpush.cn/index.jsp

三、自主开发push服务

Push服务是一个很复杂的系统,要考虑到性能、并发量、安全性等因素,这些都是技术上的难题,我们需要慢慢摸索、积累。

我们可以参考上述几个服务平台,看看他们是怎么做的

设计角度:

Ø  支持多应用,每个应用分配唯一appKey

Ø  支持多平台

Ø  支持发送到所有设备

Ø  支持发送到指定设备

Ø  支持按时间段发送

Ø  及时推送

Ø  统计推送规律

技术角度:

Ø  使用socket长连接,消息能够及时达到

Ø  优化协议,减少数据包大小

Ø  一般使用json数据格式

流程:

Ø  生成设备唯一ID

Ø  注册到pushserver

Ø  等待消息

Ø  收到消息

Ø  弹出通知

个人对服务器架构的想法:

首先服务器应该是分布式的、可扩展的,其中一个服务作为总服务,然后架设多个子服务器,终端设备需要先连接到总服务拿到需要连接的子服务器地址,然后再连接到具体的子服务器,总服务用于接收各app运营后台提交的push请求,然后通过子服务器分发到每个终端设备。

流程:

服务器之间的交互:

》架设总服务

》架设子服务

》子服务连接并登录到总服务

》定时向总服务报告连接情况

客户端登录过程:

》连接到总服务并获取子服务器地址

》连接并登录到子服务

》到数据库查询有没有发往此客户端的push

》如果有就发送,发送成功后删除

运营后台发送push过程:

》运营后台向总服务发送push数据

》总服务把数据保存到数据库

》然后把此push下发到子服务

》子服务在连接池里查找有没有发送对象

》发送到对应的客户端并删除数据库里对应的数据

附件是我用node.js写的一个demo,完全按照上面的架构写的,一个有四个模块,server:总服务,nodeServer:子服务,client:客户端,app:运营后台

使用方法:

需要先安装node.js环境(http://nodejs.org),安装完成后在cmd里输入命令:nodepath\fileName.js

》打开server,自动开始监听nodeServer的连接

》然后自动开启一个httpServer,用于监听app的push请求

》打开nodeServer,自动连接并登录到server,然后自动监听client连接

》打开client,自动创建10000个到nodeServer的连接

》打开app,自动向server发送多条push,然后push下发到nodeServer,最后分发到各client

四、总结

Urban Airship和极光推送这两个第三方推送服务平台是各方面相对比较好的,以我们目前的活跃用户量来看,如果使用Urban Airship,每月大概需要支付199$,我觉得也可以承受,如果使用极光推送,则需要承担风险。

或者我们也可以尝试自主开发一个Push服务,现在我们的活跃用户量较少,性能和并发量方面可以降低一些标准,这样既可以解决我们面临的问题,也可以锻炼我们的能力。

发件人: Jin ZhengBao(金正宝) 
发送时间: 2012年10月30日 14:08
收件人: Zhao LeiYong(赵雷勇)
抄送: Chen Meng(陈孟); Shan PengFei(单鹏飞); Ning Chao(宁超)
主题: 第三方推送服务调研

雷勇

参考以下文章。调研下第三方推送服务(国内外的)。仔细看看文档。写个demo试试,给出个可行性报告。

转载于:https://my.oschina.net/u/272337/blog/340337

2012年调研的推送市场(转)相关推荐

  1. 个推成为首家支持统一推送接口标准的第三方推送服务商!

    2017年10月16日,中国信息通信研究院泰尔终端实验室联合各大手机厂商和提供推送服务的互联网厂家成立"统一推送联盟",希望通过标准化的方式统一推送通道和接口,以降低终端功耗,提升 ...

  2. 个推和极光推送技术介绍

    一.概念 1.早期推送服务 在移动互联网以前的手机,如果有事情发生要通知用户,则会弹出一个窗口,告诉用户正在发生的事,可能是未接电话提示.日历提醒或是一封彩信.推送功能最早是被用于Email中,而目前 ...

  3. Android消息推送叨逼叨

    最近在搞即时消息推送.了解了推送服务实现的基本原理.通过长连接去实现及时的推送,或者通过轮询的方式去实现伪及时的推送.当然,通常我们选择前者.如果实现长连接就要用到socket,所以简单了解了下soc ...

  4. 信息推送服务使用规则

    点击打开源文链接 随着APP的普及,推送服务正快速地渗入到各个应用中去,但现在的推送市场还没有严格的管理,鱼目混杂的环境让用户又爱又恨.使用推送服务,保持推送服务器稳定的开发难度很大,一般都是使用稳定 ...

  5. 【苹果群发】内容Apple推送iMessage服务器和iOS手机操作系统之间的套接字连接PushNotificationDemo

    推荐内容IMESSGAE相关 作者推荐内容 iMessage苹果推软件 *** 点击即可查看作者要求内容信息 作者推荐内容 1.家庭推内容 *** 点击即可查看作者要求内容信息 作者推荐内容 2.相册 ...

  6. 集成第三方推送最佳实践

    集成第三方推送最佳实践 字数6571  阅读7983  评论46  喜欢57 本文会不定期更新,推荐watch下项目.如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可以提交pu ...

  7. Android第三方推送到达率调研

    由于众所周知的原因,国内APP不能使用谷歌官方推送GCM,同时国内android系统几乎都经过厂商的深度定制,对于后台应用的管控严格,导致推送到达率很低,现对市面上一些主流第三方推送(非所有)做一个调 ...

  8. 市场监管新规下Android接入的友盟Umeng移动统计/推送/分享SDK过程问题总结

    目录 一.移动统计SDK 二.消息推送U-push 1.修改应用包名问题 2.第三方依赖冲突导致出错 三.第三方平台分享 1.手动集成 2.自动集成 3.集成过程中问题 3.1 配置Android M ...

  9. 证券行情全市场推送解决方案

    证券行情全市场推送解决方案 吴旻 泰岩网络工作室 股票行情软件(通达信.大智慧.东方财富等)的自选股.板块等的排序,通常有2种实现方式:客户端以按页请求的方式向服务端获取,或者服务端将全市场数据推给客 ...

最新文章

  1. Apache POI和EasyExcel 第三集:Apache POI的Excel大数据量写入(分为03版的xls、07版的xlsx、升级版SXSSF)
  2. c++使用cin输入数据
  3. EF延迟加载LazyLoading
  4. 华为swot分析2020_2020华为音频产品汇总分析,完善产品质量,丰富产品线
  5. 在客户端为UltraWebGrid增加行
  6. pywin32 获取窗口句柄_Excel VBA | 这个窗口居然关不掉
  7. button点击后变色_汽车改色膜新潮流,2021年流行渐变色
  8. Vue 项目结构介绍
  9. 使用inetaddress测试目标可达性_纯java手写打造方法级白盒测试框架
  10. 设计一款知识性产品需要考虑十二个基本问题
  11. CSS3--box-shadow
  12. html禁用选择,html – 设置可选的禁用属性
  13. 【bzoj 1087】[SCOI2005]互不侵犯King(状压dp)
  14. Java简单语法与访问权限修饰符
  15. WinRAR命令行参数整理
  16. 【FAQ】【Push Kit】 华为怎么设置角标
  17. 巧用 paypal 实现转账及网上安全支付
  18. 学会这些方法,扩展磁盘分区还不是轻轻松松?
  19. Silverlight教程第五部分:用 ListBox 和 DataBinding 显示列表数据 (木野狐译)
  20. hadoop上运行java版本_Hadoop--3.JDK1.7安装配置

热门文章

  1. 模型训练常用tricks
  2. 恒生电子实习记录-15
  3. Off-policy Actor-critic in RL
  4. cs231n作业:assignment1 - features
  5. 暴力--建物流中转站
  6. Windows10下载更新一直卡在0%解决方法
  7. CSS盒子模型总结(小练习网易新闻列表和京东导航条)
  8. mybatis中大于等于,小于等于,like等特殊符号写法
  9. 一篇看懂顺序表!!(刘欣大佬《码农翻身》特别提及)
  10. 《C语言》顺序结构程序设计