Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Android DevCampProduced by CSDNWebsite:http://devcamp.csdn.net/Weibo:http://weibo.com/cmdnclub/
Android 消息推送    投石问路     徐仙明
是什么?Source: http://the-gadgeteer.com/2009/10/30/day-3-android-basics-on-verizons-droid/
? 是什么        消息          推送              例子 • ⼀一段文字     • 用户不需要主动刷新             • ⼀一种设计模式               Publish/ subscribe...
大佬们      Apple      • APNS   (“A” for “Apple”, not “Android”)      Google      • C2DM -> Google Cloud Messaging (GCM)     ...
Google 的方案 – GCM for Android
Google Cloud Messagingl    从C2DM (Cloud to Device Messaging)发展而来l    参考:       •  Google Cloud Messaging for Android    ...
GCM case study -- Chrome to Phone  Source: Google IO Chrome to Phone
组成                   Mobile                   Device      Applica       tion      Server                         GCM Serve...
GCM Service                              your app          app server                                         1.1. app_id,...
步骤                                     注册 Android设备把使用C2DM功能的用户账户(比如android.c2dm.demo@gmail.com)和App名称发送给C2DM服务器。         ...
GCM 非常好 但是 …                            Google Play                          (Android Market)               Google 账户     ...
小甜点发送数据服务器域名SSL签名不可靠 (as of 2012/07/25)  •  https://android.apis.google.com/c2dm/send
除了GCM                                   http://www.push-notification.org/                                     DIY   http:/...
DIY有多复杂?                                 网络不稳                                 定                                 • GPRS, 3G...
Source: http://dl.google.com/googleio/2010/android-push-applications-android.pdf
DIY 几种方法      • 实时                                                        • 实时SMS              轮询 (Polling)               ...
自力更生       mqtt        androidpn        RSMB /                     OpenFire       masquitto       wmqtt.jar     asmack    ...
mqtt -- an experiment by Anton Lopyrev                              服务器:                            Masquitto /           ...
androidpnl    开源项目       •  http://sourceforge.net/projects/androidpn/l    OpenFire + Spring + MINA+ ASMACK +XMPPl    X...
androidpn             服务器:            openfire   Long                  客户端:  Polling               asmack            andro...
C500k -- Urban Airship 的实验      Implementation                       Connections                      Memory Used         ...
C500k -- Urban Airship 的实验l    Linux Kernel Tuning 64bit       •  fs.file-max = 999999       •  net.ipv4.tcp_rmem = 4096 ...
但是,中国还没有成熟的第三方消息推送服务提供商
嗯, 看来那个码农说这个太复杂了               的没错, 没那么简单, 我搞不定了               我们这个版本就不上                       推送功能了吧。          如果明天不下雨,  ...
Thank you
Upcoming SlideShare
Loading in …5
×

Android消息推送实现 | 友盟 徐仙明

6,599 views

Published on

安卓应用实用功能的技术实现:《Android消息推送实现》 | Android DevCamp | 7月28日 北京

主题简介:作为移动应用开发的一个重要需求,微软和苹果公司分别为iOS和Windows Phone平台应用开发者提供了很好的消息推送解决方案。实际上Google也为Android平台提供了C2DM的解决方案供开发者使用, 但是由于多方面的原因,Android开发者在国内使用C2DM有诸多困难。

对于这个普遍存在的问题,本次演讲将和大家一起探讨可能的替代方案, 如:定时请求, SMS,第三方服务,自己搭建消息服务器等方式。通过对这些方式优缺点的剖析和比较,带给开发者一些方向上的建议, 帮助开发者选择适合自身需求和条件的方案。

讲师简介:徐仙明,友盟资深安卓开发工程师,主要负责友盟交换产品SDK端开发工作。 兴趣包括:Android应用开发,移动互联网平台上的大数据分析和挖掘,机器学习, 移动平台安全性等。

Published in: Technology, Business
  • Be the first to comment

Android消息推送实现 | 友盟 徐仙明

  1. 1. Android DevCampProduced by CSDNWebsite:http://devcamp.csdn.net/Weibo:http://weibo.com/cmdnclub/
  2. 2. Android 消息推送 投石问路 徐仙明
  3. 3. 是什么?Source: http://the-gadgeteer.com/2009/10/30/day-3-android-basics-on-verizons-droid/
  4. 4. ? 是什么 消息 推送 例子 • ⼀一段文字 • 用户不需要主动刷新 • ⼀一种设计模式 Publish/ subscribe • ⼀一个指令
  5. 5. 大佬们 Apple • APNS (“A” for “Apple”, not “Android”) Google • C2DM -> Google Cloud Messaging (GCM) Microsoft • Direct Push, Exchange ActiveSync, long lived https RIM • Push Technology, Push Mail Nokia • Symbian, Push mail
  6. 6. Google 的方案 – GCM for Android
  7. 7. Google Cloud Messagingl  从C2DM (Cloud to Device Messaging)发展而来l  参考: •  Google Cloud Messaging for Android http://developer.android.com/guide/google/gcm/index.html •  Google IO 2012: Google Cloud Messaging for Android https://developers.google.com/events/io/sessions/gooio2012/100/ •  Google IO 2010: Building push applications for Android http://dl.google.com/googleio/2010/android-push-applications- android.pdf
  8. 8. GCM case study -- Chrome to Phone Source: Google IO Chrome to Phone
  9. 9. 组成 Mobile Device Applica tion Server GCM Servers Sender ID Application Sender Auth ID Token Credentials Registration Google User ID AccountReference: http://developer.android.com/guide/google/gcm/gcm.html
  10. 10. GCM Service your app app server 1.1. app_id, sender_id1.2. app_id, sender_id, device_id 2.1. REG_ID 2.2. REG_ID 3. REG_ID 4. REG_ID, API Key, message 5.1. message 5.2. notification
  11. 11. 步骤 注册 Android设备把使用C2DM功能的用户账户(比如android.c2dm.demo@gmail.com)和App名称发送给C2DM服务器。 接收GCM服务器返回REG_ID C2DM服务器会返回⼀一个registration_id值给Android设备,设备需要保存这个registration_id值。 发REG_ID 到应用服务器 应用把registration_id和用户标识发送到自己的服务器。 应用服务器发送数据到GCM 服务器 应用服务器把要发送的数据和registration_id以及认证发送给C2DM服务器。 GCM把数据推送到Android设备 Android设备只要在程序中按之前和服务器商量好的格式从对应的key中获取数据即可。
  12. 12. GCM 非常好 但是 … Google Play (Android Market) Google 账户 • 魅族, 华为等诸多国产手 机 >= Froyo (2.2) • 94.6%, as of 2012/07/25 服务器在美国 • 服务不可靠 • app server 最好放在国外
  13. 13. 小甜点发送数据服务器域名SSL签名不可靠 (as of 2012/07/25) •  https://android.apis.google.com/c2dm/send
  14. 14. 除了GCM http://www.push-notification.org/ DIY http://www.pubnub.com/ http://getsocialize.com/ http://urbanairship.com/ http://www.android-push.com/
  15. 15. DIY有多复杂? 网络不稳 定 • GPRS, 3G 高并发 • 500k 电池容量 小 • 1400mAh http://developer.android.com/guide/google/gcm/adv.html#retry
  16. 16. Source: http://dl.google.com/googleio/2010/android-push-applications-android.pdf
  17. 17. DIY 几种方法 • 实时 • 实时SMS 轮询 (Polling) 持久连接 (Persistent TCP/IP) • 要花钱 • 实现容易 • 服务进程? • 架构简单 • 并发? • 不够实时 • DDOS? • 周期? 机制? • 耗电
  18. 18. 自力更生 mqtt androidpn RSMB / OpenFire masquitto wmqtt.jar asmack MQTT XMPP
  19. 19. mqtt -- an experiment by Anton Lopyrev 服务器: Masquitto / RSMB 客户端: 客户端无认证 wmqtt.jar IBM连接数量有限 制 协议: MQTT 持久 TCP • Ping to keep Topic: alive device id • Wake Lock / AlarmManagerReference: http://dalelane.co.uk/blog/?p=1599http://tokudu.com/2010/how-to-implement-push-notifications-for-android/
  20. 20. androidpnl  开源项目 •  http://sourceforge.net/projects/androidpn/l  OpenFire + Spring + MINA+ ASMACK +XMPPl  XMPP •  分布式 •  安全: SASL及TLS •  开源 •  跨平台: XML
  21. 21. androidpn 服务器: openfire Long 客户端: Polling asmack androidpn Topic: 协议: device XMPP id Mina: async IO
  22. 22. C500k -- Urban Airship 的实验 Implementation Connections Memory Used Java Pure NIO 512,000 + 2.5 GB Java w/Netty 330,000 2.2 GB Scala w/Netty 173,000 1.5 GB Source: http://urbanairship.com/blog/2010/08/24/c500k-in-action-at-urban-airship/
  23. 23. C500k -- Urban Airship 的实验l  Linux Kernel Tuning 64bit •  fs.file-max = 999999 •  net.ipv4.tcp_rmem = 4096 4096 16777216 •  net.ipv4.tcp_wmem = 4096 4096 16777216l  Java NIO Source: http://urbanairship.com/blog/2010/08/24/c500k-in-action-at-urban-airship/
  24. 24. 但是,中国还没有成熟的第三方消息推送服务提供商
  25. 25. 嗯, 看来那个码农说这个太复杂了 的没错, 没那么简单, 我搞不定了 我们这个版本就不上 推送功能了吧。 如果明天不下雨, 我去车库咖啡投个 团队做这个
  26. 26. Thank you

×