SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
Android DevCamp
Produced by CSDN

Website:
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)


      Microsoft
      • Direct Push, Exchange ActiveSync, long lived https


      RIM
      • Push Technology, Push Mail


      Nokia
      • Symbian, Push mail
Google 的方案 – GCM for Android
Google Cloud Messaging



l    从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
GCM case study -- Chrome to Phone




  Source: Google IO Chrome to Phone
组成



                   Mobile
                   Device



      Applica
       tion
      Server


                         GCM Servers
                                                                                           Sender ID




                                                                    Application                                 Sender Auth
                                                                        ID                                         Token


                                                                                           Credentials




                                                                            Registration                 Google User
                                                                                ID                        Account




Reference: http://developer.android.com/guide/google/gcm/gcm.html
GCM Service                              your app          app server

                                         1.1. app_id, sender_id


1.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
步骤



                                     注册

 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中获取数据即可。
GCM 非常好 但是 …




                            Google Play
                          (Android Market)


               Google 账户
               • 魅族, 华为等诸多国产手
                 机



                         >= Froyo (2.2)
                         • 94.6%, as of
                           2012/07/25



               服务器在美国
               • 服务不可靠
               • app server 最好放在国外
小甜点

发送数据服务器域名SSL签名不可靠 (as of 2012/07/25)
  •  https://android.apis.google.com/c2dm/send
除了GCM




                                   http://www.push-notification.org/




                                     DIY
   http://www.pubnub.com/



                                                                  http://getsocialize.com/




        http://urbanairship.com/

                                                 http://www.android-push.com/
DIY有多复杂?




                                 网络不稳
                                 定
                                 • GPRS, 3G
                                                         高并发
                                                         • 500k

                                 电池容量
                                 小
                                 • 1400mAh


 http://developer.android.com/guide/google/gcm/adv.html#retry
Source: http://dl.google.com/googleio/2010/android-push-applications-android.pdf
DIY 几种方法




      • 实时                                                        • 实时
SMS




              轮询 (Polling)




                                       持久连接 (Persistent TCP/IP)
      • 要花钱                  • 实现容易                               • 服务进程?
                             • 架构简单                               • 并发?
                             • 不够实时                               • DDOS?
                               • 周期?
                                 机制?
                             • 耗电
自力更生




       mqtt        androidpn

        RSMB /
                     OpenFire
       masquitto


       wmqtt.jar     asmack



        MQTT          XMPP
mqtt -- an experiment by Anton Lopyrev



                              服务器:
                            Masquitto /
                              RSMB


                                                       客户端:
   客户端无认证                                             wmqtt.jar




                        IBM
连接数量有限
   制                                                      协议: MQTT




           持久 TCP
           • Ping to keep                  Topic:
            alive                         device id
           • Wake Lock /
            AlarmManager




Reference: http://dalelane.co.uk/blog/?p=1599
http://tokudu.com/2010/how-to-implement-push-notifications-for-android/
androidpn



l    开源项目
       •  http://sourceforge.net/projects/androidpn/
l    OpenFire + Spring + MINA+ ASMACK +XMPP
l    XMPP
       •  分布式
       •  安全: SASL及TLS
       •  开源
       •  跨平台: XML
androidpn


             服务器:
            openfire

   Long                  客户端:
  Polling               asmack


            androidpn


  Topic:
                        协议:
  device
                        XMPP
    id
             Mina:
             async
              IO
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/
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 16777216
l    Java NIO




      Source: http://urbanairship.com/blog/2010/08/24/c500k-in-action-at-urban-airship/
但是,
中国还没有成熟的第三方消息推送服务提供商
嗯, 看来那个码农说
这个太复杂了               的没错, 没那么简单,
 我搞不定了               我们这个版本就不上
                       推送功能了吧。




          如果明天不下雨,
         我去车库咖啡投个
           团队做这个
Thank you

Weitere ähnliche Inhalte

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

1 docker风起云ppt v1
1 docker风起云ppt v11 docker风起云ppt v1
1 docker风起云ppt v1Jiang Shang
 
雲端技術的新趨勢
雲端技術的新趨勢雲端技術的新趨勢
雲端技術的新趨勢Ben Huang
 
这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkit这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkitLainZQ
 
Bluemix Node-Red Part II
Bluemix Node-Red Part IIBluemix Node-Red Part II
Bluemix Node-Red Part IIJoseph Chang
 
移动互联网上的微视频处理与分发
移动互联网上的微视频处理与分发移动互联网上的微视频处理与分发
移动互联网上的微视频处理与分发drewz lin
 
Practices of equipment communication v1.0
Practices of equipment communication v1.0Practices of equipment communication v1.0
Practices of equipment communication v1.0yaohung
 
Alibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconAlibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconYiwei Ma
 
iOS GCD introduction
iOS GCD introductioniOS GCD introduction
iOS GCD introductionmapledance
 
互联网视频发展和演进 网络新媒体-侯自强
互联网视频发展和演进 网络新媒体-侯自强互联网视频发展和演进 网络新媒体-侯自强
互联网视频发展和演进 网络新媒体-侯自强xobo
 
中国联通沃商店客户端功能特色
中国联通沃商店客户端功能特色中国联通沃商店客户端功能特色
中国联通沃商店客户端功能特色ocean1110
 
Introduction MQTT in Chinese
Introduction MQTT in ChineseIntroduction MQTT in Chinese
Introduction MQTT in ChineseEric Xiao
 
美团点评技术沙龙05 - Node.js业务应用实践和服务监控
美团点评技术沙龙05 - Node.js业务应用实践和服务监控美团点评技术沙龙05 - Node.js业务应用实践和服务监控
美团点评技术沙龙05 - Node.js业务应用实践和服务监控美团点评技术团队
 
淘宝前端开发关键词
淘宝前端开发关键词淘宝前端开发关键词
淘宝前端开发关键词jay li
 
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本延胜 黄
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)FLASH开发者交流会
 
防火墙产品原理介绍20080407
防火墙产品原理介绍20080407防火墙产品原理介绍20080407
防火墙产品原理介绍20080407paulqi
 
PhoneGap 通信原理和插件系统
PhoneGap 通信原理和插件系统PhoneGap 通信原理和插件系统
PhoneGap 通信原理和插件系统Tom Fan
 
The Trend Of Cloud Computing And How Should Public Sectors Adjust
The Trend Of Cloud Computing And How Should Public Sectors AdjustThe Trend Of Cloud Computing And How Should Public Sectors Adjust
The Trend Of Cloud Computing And How Should Public Sectors AdjustJazz Yao-Tsung Wang
 
移动测试中心Bmtc
移动测试中心Bmtc移动测试中心Bmtc
移动测试中心Bmtcdrewz lin
 

Ähnlich wie Android消息推送实现 | 友盟 徐仙明 (20)

1 docker风起云ppt v1
1 docker风起云ppt v11 docker风起云ppt v1
1 docker风起云ppt v1
 
Meteor
MeteorMeteor
Meteor
 
雲端技術的新趨勢
雲端技術的新趨勢雲端技術的新趨勢
雲端技術的新趨勢
 
这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkit这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkit
 
Bluemix Node-Red Part II
Bluemix Node-Red Part IIBluemix Node-Red Part II
Bluemix Node-Red Part II
 
移动互联网上的微视频处理与分发
移动互联网上的微视频处理与分发移动互联网上的微视频处理与分发
移动互联网上的微视频处理与分发
 
Practices of equipment communication v1.0
Practices of equipment communication v1.0Practices of equipment communication v1.0
Practices of equipment communication v1.0
 
Alibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconAlibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qcon
 
iOS GCD introduction
iOS GCD introductioniOS GCD introduction
iOS GCD introduction
 
互联网视频发展和演进 网络新媒体-侯自强
互联网视频发展和演进 网络新媒体-侯自强互联网视频发展和演进 网络新媒体-侯自强
互联网视频发展和演进 网络新媒体-侯自强
 
中国联通沃商店客户端功能特色
中国联通沃商店客户端功能特色中国联通沃商店客户端功能特色
中国联通沃商店客户端功能特色
 
Introduction MQTT in Chinese
Introduction MQTT in ChineseIntroduction MQTT in Chinese
Introduction MQTT in Chinese
 
美团点评技术沙龙05 - Node.js业务应用实践和服务监控
美团点评技术沙龙05 - Node.js业务应用实践和服务监控美团点评技术沙龙05 - Node.js业务应用实践和服务监控
美团点评技术沙龙05 - Node.js业务应用实践和服务监控
 
淘宝前端开发关键词
淘宝前端开发关键词淘宝前端开发关键词
淘宝前端开发关键词
 
Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本Appium手机自动化测试 testerhome_bqcon版本
Appium手机自动化测试 testerhome_bqcon版本
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
 
防火墙产品原理介绍20080407
防火墙产品原理介绍20080407防火墙产品原理介绍20080407
防火墙产品原理介绍20080407
 
PhoneGap 通信原理和插件系统
PhoneGap 通信原理和插件系统PhoneGap 通信原理和插件系统
PhoneGap 通信原理和插件系统
 
The Trend Of Cloud Computing And How Should Public Sectors Adjust
The Trend Of Cloud Computing And How Should Public Sectors AdjustThe Trend Of Cloud Computing And How Should Public Sectors Adjust
The Trend Of Cloud Computing And How Should Public Sectors Adjust
 
移动测试中心Bmtc
移动测试中心Bmtc移动测试中心Bmtc
移动测试中心Bmtc
 

Mehr von imShining @DevCamp

如何创建更加灵活的App | 大众点评 屠毅敏
如何创建更加灵活的App | 大众点评 屠毅敏如何创建更加灵活的App | 大众点评 屠毅敏
如何创建更加灵活的App | 大众点评 屠毅敏imShining @DevCamp
 
Android在多屏幕、多设备上的适配 | 布丁 任斐
Android在多屏幕、多设备上的适配 | 布丁 任斐Android在多屏幕、多设备上的适配 | 布丁 任斐
Android在多屏幕、多设备上的适配 | 布丁 任斐imShining @DevCamp
 
和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂imShining @DevCamp
 
发现和建立多设备之间的数据通信 | 豌豆荚实验室 孙桥
发现和建立多设备之间的数据通信 | 豌豆荚实验室 孙桥发现和建立多设备之间的数据通信 | 豌豆荚实验室 孙桥
发现和建立多设备之间的数据通信 | 豌豆荚实验室 孙桥imShining @DevCamp
 
Android音频口数据通信开发 | 爱图腾 李鹏军
Android音频口数据通信开发 | 爱图腾 李鹏军Android音频口数据通信开发 | 爱图腾 李鹏军
Android音频口数据通信开发 | 爱图腾 李鹏军imShining @DevCamp
 
凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山
凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山
凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山imShining @DevCamp
 
Android账户同步备份框架 | 盛大乐众ROM 郭振
Android账户同步备份框架 | 盛大乐众ROM 郭振 Android账户同步备份框架 | 盛大乐众ROM 郭振
Android账户同步备份框架 | 盛大乐众ROM 郭振 imShining @DevCamp
 
简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞
简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞
简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞imShining @DevCamp
 
在iOS平台上用Cocos2D做开发 | iOS独立开发者 秦春林
在iOS平台上用Cocos2D做开发 | iOS独立开发者 秦春林在iOS平台上用Cocos2D做开发 | iOS独立开发者 秦春林
在iOS平台上用Cocos2D做开发 | iOS独立开发者 秦春林imShining @DevCamp
 
在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛
在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛
在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛imShining @DevCamp
 
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林imShining @DevCamp
 
逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp
逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp
逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCampimShining @DevCamp
 
《Passbook实战详解》| 爱图腾 廉洁 | iOS DevCamp
《Passbook实战详解》| 爱图腾 廉洁 | iOS DevCamp《Passbook实战详解》| 爱图腾 廉洁 | iOS DevCamp
《Passbook实战详解》| 爱图腾 廉洁 | iOS DevCampimShining @DevCamp
 
从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践
从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践
从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践imShining @DevCamp
 

Mehr von imShining @DevCamp (14)

如何创建更加灵活的App | 大众点评 屠毅敏
如何创建更加灵活的App | 大众点评 屠毅敏如何创建更加灵活的App | 大众点评 屠毅敏
如何创建更加灵活的App | 大众点评 屠毅敏
 
Android在多屏幕、多设备上的适配 | 布丁 任斐
Android在多屏幕、多设备上的适配 | 布丁 任斐Android在多屏幕、多设备上的适配 | 布丁 任斐
Android在多屏幕、多设备上的适配 | 布丁 任斐
 
和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂
 
发现和建立多设备之间的数据通信 | 豌豆荚实验室 孙桥
发现和建立多设备之间的数据通信 | 豌豆荚实验室 孙桥发现和建立多设备之间的数据通信 | 豌豆荚实验室 孙桥
发现和建立多设备之间的数据通信 | 豌豆荚实验室 孙桥
 
Android音频口数据通信开发 | 爱图腾 李鹏军
Android音频口数据通信开发 | 爱图腾 李鹏军Android音频口数据通信开发 | 爱图腾 李鹏军
Android音频口数据通信开发 | 爱图腾 李鹏军
 
凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山
凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山
凡客移动应用之Android + HTML5技术运用 | 凡客 汪健飞 徐金山
 
Android账户同步备份框架 | 盛大乐众ROM 郭振
Android账户同步备份框架 | 盛大乐众ROM 郭振 Android账户同步备份框架 | 盛大乐众ROM 郭振
Android账户同步备份框架 | 盛大乐众ROM 郭振
 
简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞
简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞
简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞
 
在iOS平台上用Cocos2D做开发 | iOS独立开发者 秦春林
在iOS平台上用Cocos2D做开发 | iOS独立开发者 秦春林在iOS平台上用Cocos2D做开发 | iOS独立开发者 秦春林
在iOS平台上用Cocos2D做开发 | iOS独立开发者 秦春林
 
在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛
在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛
在iOS平台上实现全功能视频处理 | 盛大微酷 赵志猛
 
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
iOS平台应用详解:《Siri:I,robot! Siri语音识别系统详解》| 新浪 张俊林
 
逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp
逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp
逆向工程技术详解:解开IPA文件的灰沙 -- 通过静态分析工具了解IPA实现 | 友盟 张超 | iOS DevCamp
 
《Passbook实战详解》| 爱图腾 廉洁 | iOS DevCamp
《Passbook实战详解》| 爱图腾 廉洁 | iOS DevCamp《Passbook实战详解》| 爱图腾 廉洁 | iOS DevCamp
《Passbook实战详解》| 爱图腾 廉洁 | iOS DevCamp
 
从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践
从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践
从知乎 iPhone 端重构说开去:Web 为主的复杂社交产品的 iOS 端开发策略及实践
 

Kürzlich hochgeladen

函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptxNCU MCL
 
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptxNCU MCL
 
20220113_product_day copy.pdf20220113_product_day copy.pdf
20220113_product_day copy.pdf20220113_product_day copy.pdf20220113_product_day copy.pdf20220113_product_day copy.pdf
20220113_product_day copy.pdf20220113_product_day copy.pdfJamie (Taka) Wang
 
20200427_02_hardware_v3.pdf20200427_02_hardware_v3.pdf
20200427_02_hardware_v3.pdf20200427_02_hardware_v3.pdf20200427_02_hardware_v3.pdf20200427_02_hardware_v3.pdf
20200427_02_hardware_v3.pdf20200427_02_hardware_v3.pdfJamie (Taka) Wang
 
20200808自營電商平台策略討論20200808自營電商平台策略討論_v1.pdf
20200808自營電商平台策略討論20200808自營電商平台策略討論_v1.pdf20200808自營電商平台策略討論20200808自營電商平台策略討論_v1.pdf
20200808自營電商平台策略討論20200808自營電商平台策略討論_v1.pdfJamie (Taka) Wang
 
20200727_Insight workstation A1 plus 測試報告.pdf20200727_Insight workstation A1 ...
20200727_Insight workstation A1 plus 測試報告.pdf20200727_Insight workstation A1 ...20200727_Insight workstation A1 plus 測試報告.pdf20200727_Insight workstation A1 ...
20200727_Insight workstation A1 plus 測試報告.pdf20200727_Insight workstation A1 ...Jamie (Taka) Wang
 
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】黑客 接单【TG/微信qoqoqdqd】
 
20210105_量產技轉.pdf20210105_量產技轉.pdf20210105_量產技轉.pdf
20210105_量產技轉.pdf20210105_量產技轉.pdf20210105_量產技轉.pdf20210105_量產技轉.pdf20210105_量產技轉.pdf20210105_量產技轉.pdf
20210105_量產技轉.pdf20210105_量產技轉.pdf20210105_量產技轉.pdfJamie (Taka) Wang
 
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptxSymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptxNCU MCL
 
20200429_03_ec_v8.pdf20200429_03_ec_v8.pdf20200429_03_ec_v8.pdf
20200429_03_ec_v8.pdf20200429_03_ec_v8.pdf20200429_03_ec_v8.pdf20200429_03_ec_v8.pdf20200429_03_ec_v8.pdf20200429_03_ec_v8.pdf
20200429_03_ec_v8.pdf20200429_03_ec_v8.pdf20200429_03_ec_v8.pdfJamie (Taka) Wang
 
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptxNCU MCL
 
20200602_insight_business_plan_3.pdf20200602_insight_business_plan_3.pdf
20200602_insight_business_plan_3.pdf20200602_insight_business_plan_3.pdf20200602_insight_business_plan_3.pdf20200602_insight_business_plan_3.pdf
20200602_insight_business_plan_3.pdf20200602_insight_business_plan_3.pdfJamie (Taka) Wang
 
20200607_insight_sync.pdf20200607_insight_sync.pdf
20200607_insight_sync.pdf20200607_insight_sync.pdf20200607_insight_sync.pdf20200607_insight_sync.pdf
20200607_insight_sync.pdf20200607_insight_sync.pdfJamie (Taka) Wang
 
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptxNCU MCL
 
20200429_01_software_v8.pdf20200429_01_software_v8.pdf20200429_01_software_v8...
20200429_01_software_v8.pdf20200429_01_software_v8.pdf20200429_01_software_v8...20200429_01_software_v8.pdf20200429_01_software_v8.pdf20200429_01_software_v8...
20200429_01_software_v8.pdf20200429_01_software_v8.pdf20200429_01_software_v8...Jamie (Taka) Wang
 
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxSymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxNCU MCL
 
20200606_insight_Ignition.pdf20200606_insight_Ignition.pdf
20200606_insight_Ignition.pdf20200606_insight_Ignition.pdf20200606_insight_Ignition.pdf20200606_insight_Ignition.pdf
20200606_insight_Ignition.pdf20200606_insight_Ignition.pdfJamie (Taka) Wang
 

Kürzlich hochgeladen (17)

函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
 
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
 
20220113_product_day copy.pdf20220113_product_day copy.pdf
20220113_product_day copy.pdf20220113_product_day copy.pdf20220113_product_day copy.pdf20220113_product_day copy.pdf
20220113_product_day copy.pdf20220113_product_day copy.pdf
 
20200427_02_hardware_v3.pdf20200427_02_hardware_v3.pdf
20200427_02_hardware_v3.pdf20200427_02_hardware_v3.pdf20200427_02_hardware_v3.pdf20200427_02_hardware_v3.pdf
20200427_02_hardware_v3.pdf20200427_02_hardware_v3.pdf
 
20200808自營電商平台策略討論20200808自營電商平台策略討論_v1.pdf
20200808自營電商平台策略討論20200808自營電商平台策略討論_v1.pdf20200808自營電商平台策略討論20200808自營電商平台策略討論_v1.pdf
20200808自營電商平台策略討論20200808自營電商平台策略討論_v1.pdf
 
20200727_Insight workstation A1 plus 測試報告.pdf20200727_Insight workstation A1 ...
20200727_Insight workstation A1 plus 測試報告.pdf20200727_Insight workstation A1 ...20200727_Insight workstation A1 plus 測試報告.pdf20200727_Insight workstation A1 ...
20200727_Insight workstation A1 plus 測試報告.pdf20200727_Insight workstation A1 ...
 
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
 
20210105_量產技轉.pdf20210105_量產技轉.pdf20210105_量產技轉.pdf
20210105_量產技轉.pdf20210105_量產技轉.pdf20210105_量產技轉.pdf20210105_量產技轉.pdf20210105_量產技轉.pdf20210105_量產技轉.pdf
20210105_量產技轉.pdf20210105_量產技轉.pdf20210105_量產技轉.pdf
 
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptxSymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
 
20200429_03_ec_v8.pdf20200429_03_ec_v8.pdf20200429_03_ec_v8.pdf
20200429_03_ec_v8.pdf20200429_03_ec_v8.pdf20200429_03_ec_v8.pdf20200429_03_ec_v8.pdf20200429_03_ec_v8.pdf20200429_03_ec_v8.pdf
20200429_03_ec_v8.pdf20200429_03_ec_v8.pdf20200429_03_ec_v8.pdf
 
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
 
20200602_insight_business_plan_3.pdf20200602_insight_business_plan_3.pdf
20200602_insight_business_plan_3.pdf20200602_insight_business_plan_3.pdf20200602_insight_business_plan_3.pdf20200602_insight_business_plan_3.pdf
20200602_insight_business_plan_3.pdf20200602_insight_business_plan_3.pdf
 
20200607_insight_sync.pdf20200607_insight_sync.pdf
20200607_insight_sync.pdf20200607_insight_sync.pdf20200607_insight_sync.pdf20200607_insight_sync.pdf
20200607_insight_sync.pdf20200607_insight_sync.pdf
 
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
 
20200429_01_software_v8.pdf20200429_01_software_v8.pdf20200429_01_software_v8...
20200429_01_software_v8.pdf20200429_01_software_v8.pdf20200429_01_software_v8...20200429_01_software_v8.pdf20200429_01_software_v8.pdf20200429_01_software_v8...
20200429_01_software_v8.pdf20200429_01_software_v8.pdf20200429_01_software_v8...
 
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxSymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
 
20200606_insight_Ignition.pdf20200606_insight_Ignition.pdf
20200606_insight_Ignition.pdf20200606_insight_Ignition.pdf20200606_insight_Ignition.pdf20200606_insight_Ignition.pdf
20200606_insight_Ignition.pdf20200606_insight_Ignition.pdf
 

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

  • 1. Android DevCamp Produced by CSDN Website: http://devcamp.csdn.net/ Weibo: http://weibo.com/cmdnclub/
  • 2. Android 消息推送 投石问路 徐仙明
  • 4. ? 是什么 消息 推送 例子 • ⼀一段文字 • 用户不需要主动刷新 • ⼀一种设计模式 Publish/ subscribe • ⼀一个指令
  • 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. Google 的方案 – GCM for Android
  • 7. Google Cloud Messaging l  从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. GCM case study -- Chrome to Phone Source: Google IO Chrome to Phone
  • 9. 组成 Mobile Device Applica tion Server GCM Servers Sender ID Application Sender Auth ID Token Credentials Registration Google User ID Account Reference: http://developer.android.com/guide/google/gcm/gcm.html
  • 10. GCM Service your app app server 1.1. app_id, sender_id 1.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. 步骤 注册 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. GCM 非常好 但是 … Google Play (Android Market) Google 账户 • 魅族, 华为等诸多国产手 机 >= Froyo (2.2) • 94.6%, as of 2012/07/25 服务器在美国 • 服务不可靠 • app server 最好放在国外
  • 13. 小甜点 发送数据服务器域名SSL签名不可靠 (as of 2012/07/25) •  https://android.apis.google.com/c2dm/send
  • 14. 除了GCM http://www.push-notification.org/ DIY http://www.pubnub.com/ http://getsocialize.com/ http://urbanairship.com/ http://www.android-push.com/
  • 15. DIY有多复杂? 网络不稳 定 • GPRS, 3G 高并发 • 500k 电池容量 小 • 1400mAh http://developer.android.com/guide/google/gcm/adv.html#retry
  • 17. DIY 几种方法 • 实时 • 实时 SMS 轮询 (Polling) 持久连接 (Persistent TCP/IP) • 要花钱 • 实现容易 • 服务进程? • 架构简单 • 并发? • 不够实时 • DDOS? • 周期? 机制? • 耗电
  • 18. 自力更生 mqtt androidpn RSMB / OpenFire masquitto wmqtt.jar asmack MQTT XMPP
  • 19. mqtt -- an experiment by Anton Lopyrev 服务器: Masquitto / RSMB 客户端: 客户端无认证 wmqtt.jar IBM 连接数量有限 制 协议: MQTT 持久 TCP • Ping to keep Topic: alive device id • Wake Lock / AlarmManager Reference: http://dalelane.co.uk/blog/?p=1599 http://tokudu.com/2010/how-to-implement-push-notifications-for-android/
  • 20. androidpn l  开源项目 •  http://sourceforge.net/projects/androidpn/ l  OpenFire + Spring + MINA+ ASMACK +XMPP l  XMPP •  分布式 •  安全: SASL及TLS •  开源 •  跨平台: XML
  • 21. androidpn 服务器: openfire Long 客户端: Polling asmack androidpn Topic: 协议: device XMPP id Mina: async IO
  • 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. 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 16777216 l  Java NIO Source: http://urbanairship.com/blog/2010/08/24/c500k-in-action-at-urban-airship/
  • 25. 嗯, 看来那个码农说 这个太复杂了 的没错, 没那么简单, 我搞不定了 我们这个版本就不上 推送功能了吧。 如果明天不下雨, 我去车库咖啡投个 团队做这个