- 浏览: 1484360 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (419)
- XMPP (19)
- Android (180)
- Java (59)
- Network (4)
- HTML5 (13)
- Eclipse (9)
- SCM (23)
- C/C++ (4)
- UML (4)
- Libjingle (15)
- Tools&Softwares (29)
- Linphone (5)
- Linux&UNIX (6)
- Windows (18)
- Google (10)
- MISC (3)
- SIP (6)
- SQLite (5)
- Security (4)
- Opensource (29)
- Online (2)
- 文章 (3)
- MemoryLeak (10)
- Decompile (5)
- Ruby (1)
- Image (1)
- Bat (4)
- TTS&ASR (28)
- Multimedia (1)
- iOS (20)
- Asciiflow - ASCII Flow Diagram Tool.htm (1)
- Networking (1)
- DLNA&UPnP (2)
- Chrome (2)
- CI (1)
- SmartHome (0)
- CloudComputing (1)
- NodeJS (3)
- MachineLearning (2)
最新评论
-
bzhao:
点赞123!
Windows的adb shell中使用vi不乱码方法及AdbPutty -
wahahachuang8:
我觉得这种东西自己开发太麻烦了,就别自己捣鼓了,找个第三方,方 ...
HTML5 WebSocket 技术介绍 -
obehavior:
view.setOnTouchListenerview是什么
[转]android 一直在最前面的浮动窗口效果 -
wutenghua:
[转]android 一直在最前面的浮动窗口效果 -
zee3.lin:
Sorry~~
When I build "call ...
Step by Step about How to Build libjingle 0.4
GMS (Google Mobile Applications)在Android平台使用了Push机制, 所以有更好的用户体验:当服务器上有你的新的的Gmail邮件, 或者有新的Calendar Events, 或者有新的Contact, 你的Android总会第一时间知道, 并且会自动sync下来. 这里用到的就是Push机制. Google在Android上的Push机制利用的就是XMPP协议, 再加上Android上的GTalk客户端也是利用XMPP协议, 所以底层用的是同一个XMPP框架, 协议的实现是开源的Smack.
在Android 2.2版本FroYo之前, Google的Push机制直接就是利用XMPP协议的extension,也就是在<message>元素下加入自定义的子元素, 但自从FroYo, Android引入了一个新的框架C2DM(Cloud to Device Messaging), 而Google的Pushing 机制变成使用C2DM框架. 那C2DM框架的原理是什么呢? XMPP! 所以, C2DM只不过是在XMPP协议基础上的一套机制, 一个标准API而已.
在后面的时间, 我会陆续把Android上的Sync框架,GMS的Push机制, 以及C2DM的实现介绍一下, 我想以时序图的形式效果会更好.
2011.02.09 Update
增加关于Google Push机制以及C2DM实现的具体介绍
http://mysupebaby.iteye.com/blog/902054
broadcast一个intent, 在另一篇文件已经介绍.
我说的包签名指的是Google一系列apps之间用的是包签名. 如果开发人员开发一个使用C2DM机制的应用, 就没办法使用包签名了, 因为发送C2DM broadcast action的肯定是Google的service.
总的来说呢, 没必要担心这个问题, 因为这是个common的问题, 不是C2DM框架特有的问题.
没错,是Android的问题。但我希望可以通过合理的设计堵住C2DM数据泄露的可能性。
我说的包签名指的是Google一系列apps之间用的是包签名. 如果开发人员开发一个使用C2DM机制的应用, 就没办法使用包签名了, 因为发送C2DM broadcast action的肯定是Google的service.
总的来说呢, 没必要担心这个问题, 因为这是个common的问题, 不是C2DM框架特有的问题.
C2DM的一个不好的地方是服务器端又要使用Google的API. 自己实现的话其实不难, 就是一个XMPP协议的通信, 安全性的话应该问题不大, 就是使用XMPP的安全机制. 我觉得更重要的问题是XMPP服务器的负载均衡和Cluster等问题.
我提到的安全性是指在XMPP传输以外,如何避免已经发送到设备端的数据被一些恶意应用截获或者破坏。感觉目前C2DM在这方面做得不够好。
不会的. C2DM发送broadcast intent的时候使用了signature方式的permission, 所以只有同样signature的apk的broadcast receiver才能注册并成功接收该broadcast intent.
这正是我所说的薄弱之处。我举个例子。
应用A是合法的C2DM应用,应用B是黑客应用。应用B声明并使用了与应用A完全一样的C2D_MESSAGE permission,并且也接收与应用A一样category的C2DM信息。首先在手机上安装应用A并正常运作,然后卸载应用A,再安装应用B,我们会发现应用B也会接收到应用A的C2DM消息。当然,消息里面的数据格式对应用B来说还是未知的,不过通过反编译应用A的APK也不难获得。这样应用B就得到应用A的数据了。
这个例子说明了C2DM数据被截获的一种可能性。在实际操作中黑客应用也许很难创造合适的机会,但毕竟存在隐患。我们如果设计类似的架构,最好还是多考虑一下。
C2DM的一个不好的地方是服务器端又要使用Google的API. 自己实现的话其实不难, 就是一个XMPP协议的通信, 安全性的话应该问题不大, 就是使用XMPP的安全机制. 我觉得更重要的问题是XMPP服务器的负载均衡和Cluster等问题.
我提到的安全性是指在XMPP传输以外,如何避免已经发送到设备端的数据被一些恶意应用截获或者破坏。感觉目前C2DM在这方面做得不够好。
不会的. C2DM发送broadcast intent的时候使用了signature方式的permission, 所以只有同样signature的apk的broadcast receiver才能注册并成功接收该broadcast intent.
C2DM的一个不好的地方是服务器端又要使用Google的API. 自己实现的话其实不难, 就是一个XMPP协议的通信, 安全性的话应该问题不大, 就是使用XMPP的安全机制. 我觉得更重要的问题是XMPP服务器的负载均衡和Cluster等问题.
我提到的安全性是指在XMPP传输以外,如何避免已经发送到设备端的数据被一些恶意应用截获或者破坏。感觉目前C2DM在这方面做得不够好。
C2DM的一个不好的地方是服务器端又要使用Google的API. 自己实现的话其实不难, 就是一个XMPP协议的通信, 安全性的话应该问题不大, 就是使用XMPP的安全机制. 我觉得更重要的问题是XMPP服务器的负载均衡和Cluster等问题.
等上班后吧, 在家里杂事太多, 静不下心研究的那么细...
当然可以利用XMPP任意实现自己的Push机制, 如果有自己的XMPP服务器的话.
在Android 2.2版本FroYo之前, Google的Push机制直接就是利用XMPP协议的extension,也就是在<message>元素下加入自定义的子元素, 但自从FroYo, Android引入了一个新的框架C2DM(Cloud to Device Messaging), 而Google的Pushing 机制变成使用C2DM框架. 那C2DM框架的原理是什么呢? XMPP! 所以, C2DM只不过是在XMPP协议基础上的一套机制, 一个标准API而已.
在后面的时间, 我会陆续把Android上的Sync框架,GMS的Push机制, 以及C2DM的实现介绍一下, 我想以时序图的形式效果会更好.
2011.02.09 Update
增加关于Google Push机制以及C2DM实现的具体介绍
http://mysupebaby.iteye.com/blog/902054
评论
20 楼
laiyangdeli
2011-02-22
ak121077313 写道
我只想知道"这样当Server端有changes后, 会通过C2DM框架发送"com.google.android.c2dm.intent.RECEIVE" action" service 是怎么发送给客户端的
broadcast一个intent, 在另一篇文件已经介绍.
19 楼
ak121077313
2011-02-22
我只想知道"这样当Server端有changes后, 会通过C2DM框架发送"com.google.android.c2dm.intent.RECEIVE" action" service 是怎么发送给客户端的
18 楼
syluke
2011-02-12
laiyangdeli 写道
figofuture 写道
楼主不是说还有包签名的验证这一步吗?包的签名不太可能拿得到吧。
我说的包签名指的是Google一系列apps之间用的是包签名. 如果开发人员开发一个使用C2DM机制的应用, 就没办法使用包签名了, 因为发送C2DM broadcast action的肯定是Google的service.
总的来说呢, 没必要担心这个问题, 因为这是个common的问题, 不是C2DM框架特有的问题.
没错,是Android的问题。但我希望可以通过合理的设计堵住C2DM数据泄露的可能性。
17 楼
laiyangdeli
2011-02-12
figofuture 写道
楼主不是说还有包签名的验证这一步吗?包的签名不太可能拿得到吧。
我说的包签名指的是Google一系列apps之间用的是包签名. 如果开发人员开发一个使用C2DM机制的应用, 就没办法使用包签名了, 因为发送C2DM broadcast action的肯定是Google的service.
总的来说呢, 没必要担心这个问题, 因为这是个common的问题, 不是C2DM框架特有的问题.
16 楼
figofuture
2011-02-12
楼主不是说还有包签名的验证这一步吗?包的签名不太可能拿得到吧。
15 楼
laiyangdeli
2011-02-11
楼上说的case我倒是没有试过. 这也许是整个Android系统存在的问题. 通常来说, 很多broadcast的intent都没有permission(可能开发人员没有意识到), 意味着你往往可以截获这些intent. 所以才有了OpenIntent这样的项目专门收集一些intent.
14 楼
syluke
2011-02-11
laiyangdeli 写道
syluke 写道
laiyangdeli 写道
syluke 写道
楼主的文章很棒!我目前也在研究C2DM,看来同道中人真的不少。初步看来,自己实现类似架构没有问题。需要重点考虑的是安全性和长期性能。
C2DM的一个不好的地方是服务器端又要使用Google的API. 自己实现的话其实不难, 就是一个XMPP协议的通信, 安全性的话应该问题不大, 就是使用XMPP的安全机制. 我觉得更重要的问题是XMPP服务器的负载均衡和Cluster等问题.
我提到的安全性是指在XMPP传输以外,如何避免已经发送到设备端的数据被一些恶意应用截获或者破坏。感觉目前C2DM在这方面做得不够好。
不会的. C2DM发送broadcast intent的时候使用了signature方式的permission, 所以只有同样signature的apk的broadcast receiver才能注册并成功接收该broadcast intent.
这正是我所说的薄弱之处。我举个例子。
应用A是合法的C2DM应用,应用B是黑客应用。应用B声明并使用了与应用A完全一样的C2D_MESSAGE permission,并且也接收与应用A一样category的C2DM信息。首先在手机上安装应用A并正常运作,然后卸载应用A,再安装应用B,我们会发现应用B也会接收到应用A的C2DM消息。当然,消息里面的数据格式对应用B来说还是未知的,不过通过反编译应用A的APK也不难获得。这样应用B就得到应用A的数据了。
这个例子说明了C2DM数据被截获的一种可能性。在实际操作中黑客应用也许很难创造合适的机会,但毕竟存在隐患。我们如果设计类似的架构,最好还是多考虑一下。
13 楼
laiyangdeli
2011-02-11
syluke 写道
laiyangdeli 写道
syluke 写道
楼主的文章很棒!我目前也在研究C2DM,看来同道中人真的不少。初步看来,自己实现类似架构没有问题。需要重点考虑的是安全性和长期性能。
C2DM的一个不好的地方是服务器端又要使用Google的API. 自己实现的话其实不难, 就是一个XMPP协议的通信, 安全性的话应该问题不大, 就是使用XMPP的安全机制. 我觉得更重要的问题是XMPP服务器的负载均衡和Cluster等问题.
我提到的安全性是指在XMPP传输以外,如何避免已经发送到设备端的数据被一些恶意应用截获或者破坏。感觉目前C2DM在这方面做得不够好。
不会的. C2DM发送broadcast intent的时候使用了signature方式的permission, 所以只有同样signature的apk的broadcast receiver才能注册并成功接收该broadcast intent.
12 楼
syluke
2011-02-11
laiyangdeli 写道
syluke 写道
楼主的文章很棒!我目前也在研究C2DM,看来同道中人真的不少。初步看来,自己实现类似架构没有问题。需要重点考虑的是安全性和长期性能。
C2DM的一个不好的地方是服务器端又要使用Google的API. 自己实现的话其实不难, 就是一个XMPP协议的通信, 安全性的话应该问题不大, 就是使用XMPP的安全机制. 我觉得更重要的问题是XMPP服务器的负载均衡和Cluster等问题.
我提到的安全性是指在XMPP传输以外,如何避免已经发送到设备端的数据被一些恶意应用截获或者破坏。感觉目前C2DM在这方面做得不够好。
11 楼
laiyangdeli
2011-02-11
syluke 写道
楼主的文章很棒!我目前也在研究C2DM,看来同道中人真的不少。初步看来,自己实现类似架构没有问题。需要重点考虑的是安全性和长期性能。
C2DM的一个不好的地方是服务器端又要使用Google的API. 自己实现的话其实不难, 就是一个XMPP协议的通信, 安全性的话应该问题不大, 就是使用XMPP的安全机制. 我觉得更重要的问题是XMPP服务器的负载均衡和Cluster等问题.
10 楼
syluke
2011-02-11
楼主的文章很棒!我目前也在研究C2DM,看来同道中人真的不少。初步看来,自己实现类似架构没有问题。需要重点考虑的是安全性和长期性能。
9 楼
nciky1984
2011-02-11
期待楼主完整版,最近也在研究这部分~
8 楼
laiyangdeli
2011-02-09
2011.02.09 Update
增加关于Google Push机制以及C2DM实现的具体介绍
http://mysupebaby.iteye.com/blog/902054
赶时间匆匆写了一篇, 免得大家等.
增加关于Google Push机制以及C2DM实现的具体介绍
http://mysupebaby.iteye.com/blog/902054
赶时间匆匆写了一篇, 免得大家等.
7 楼
niwtsew
2011-02-09
push技术相当有前途,期待楼主下文。
6 楼
laiyangdeli
2011-02-09
archy123 写道
大哥,我在等下文。。。可别光说不练
等上班后吧, 在家里杂事太多, 静不下心研究的那么细...
5 楼
yaoxinghuo
2011-02-09
期待下文。。。
4 楼
archy123
2011-02-09
大哥,我在等下文。。。可别光说不练
3 楼
chinapengwei_wh
2011-02-09
正好要学习相关知识,期待中。。。。。
2 楼
laiyangdeli
2011-02-08
sunburst 写道
这个不错,非常期待,不过我更感兴趣的是是否可以自己调用发生push,当然自己有服务器,在不基于C2DM的基础上,因为不是所有人都是2.2的系统
当然可以利用XMPP任意实现自己的Push机制, 如果有自己的XMPP服务器的话.
1 楼
sunburst
2011-02-08
这个不错,非常期待,不过我更感兴趣的是是否可以自己调用发生push,当然自己有服务器,在不基于C2DM的基础上,因为不是所有人都是2.2的系统
发表评论
-
[Android] 为Android安装BusyBox —— 完整的bash shell
2013-12-27 10:19 1422http://www.cnblogs.com/xiaowen ... -
Windows的adb shell中使用vi不乱码方法及AdbPutty
2013-12-27 10:17 7415http://www.veryhuo.com/down/ht ... -
AppMobi推出新XDK,可创建测试PhoneGap项目
2012-09-03 13:39 2543AppMobi今天发布了一个新的工具PhoneGap Mobi ... -
Sencha
2012-09-03 12:59 1142http://www.sencha.com/ Se ... -
jQuery Mobile学习
2012-09-01 12:33 1631使用Jquery Mobile设计Android通讯录 ... -
BackBone
2012-09-01 12:34 1226Backbone.js 是一种重量级javascript M ... -
jQTouch
2012-08-30 15:57 942A Zepto/jQuery plugin for mobil ... -
SwiFTP
2012-08-30 15:43 1247SwiFTP is a FTP server that run ... -
kWS
2012-08-30 15:41 1153kWS is a lightweight and fast W ... -
jQuery Mobile
2012-08-30 15:07 982http://jquerymobile.com/ -
PhoneGap
2012-08-30 15:07 1005http://phonegap.com/ -
Android Button background image pressed/highlighted and disabled states without
2012-08-06 12:49 1634http://shikii.net/blog/android- ... -
[AndriodTips]Image, saved to sdcard, doesn't appear in Android's Gallery app
2012-08-04 16:15 1118http://stackoverflow.com/questi ... -
Voice detection for Android
2012-07-23 11:39 2303Here it is, my fist JAVA applic ... -
[AndroidTip]local reference table overflow (max=512)的错误解决
2012-07-22 22:56 5962JNI层coding经常会遇到ReferenceTable o ... -
[AndroidTip]EditText如何初始状态不获得焦点?
2012-07-22 15:35 1191最简单的办法是在EditText前面放置一个看不到的Linea ... -
[AndroidTip]android textview滚动条
2012-07-21 14:29 1266本来是想做一个显示文字信息的,当文字很多时View的高度不能超 ... -
Google公布Android 4.1完整功能
2012-07-16 09:48 3140http://www.android.com/about/je ... -
Android开发:使用AudioTrack播放PCM音频数据【附源码】
2012-07-13 15:20 20780http://www.linuxidc.com/Linux/2 ... -
Android上的行车记录仪
2012-07-11 22:31 1968MyCar Recorder DailyRoads
相关推荐
Android C2DM 从服务器端将数据push到客户端
详细介绍了android平台的推送机制,原文是cnki上的,特意打包分享。
Android push notification中C2DM,MQTT,XPMM的比较
因此,WAP PUSH实现了短信和WAP业务的结合,节省了您寻找业务的时间,方便您直接找到并使用自己喜 欢的业务。PUSH信息无论是否被用户打开,都会保留在手机 的"推入收件箱"内,用户可以重复打开。 wap push 的意思...
附件里有3个压缩包,分别是基于udp,xmpp,wmqtt实现push机制的客户端代码,可以参考http://tokudu.com/post/50024574938/how-to-implement-push-notifications-for-android,哈哈,不过是英文的。
使用android push notification service 实现即时通知
2.Google的C2DM,具体不细说,缺点,服务器在国外,你懂得,不是很稳定。 3.XMPP协议,它是一种基于XML的传递协议,具有很强的灵活性和可扩展性。它的特点是将复杂性从客户端转移到了服务器端。 听说GTalk、QQ、IM等...
android 开发 push 短信协议解析,push短信头,sl,si,co三种push短信的协议解析。用来支持android中mms不支持push短信的缺陷。开发必备
单通道多应用Push系统以service方式运行,如果一个手机安装了多个集成pushSDK的应用,只有一个service实例运行(不会每个应用都开启一个后台服务),即多个应用共享一个push通道,这样的设计目的是:减少手机运行的...
Android Push 服务器和客户端。具体使用方法可参照:http://www.cnblogs.com/hanyonglu/archive/2012/03/16/2399655.html
Android Push it单机版事件管理APP是一款个人独立开发的免费android应用,主要应用于日常事务管理,期望能够帮助个人和团队更好地把握时间,让工作和生活更加井井有条。 由于能力和精力有限,完整版的应用可能实现...
android 单通道多应用Push系统 ,补充文档
【Android实例】《3 分钟搞定 Android Push》 一步一步教材
google 给出的 android push 开发指导。 (Building Push Applications for Android)
一般情况下,使用较标准的Google的android系统,拦截比较成功(例如:摩托罗拉)。 如果手机厂商做了较大的改动,拦截可能会有问题。 例如:联想的乐Phone,魅族M9,等拦截不好。会出现短信进入收件箱,才删除,或者...
NULL 博文链接:https://fanfq.iteye.com/blog/1405385
Android第三方PUSH-SDK总结。包括小米PUSH
NULL 博文链接:https://seya.iteye.com/blog/903137
自己做的一个android Push功能
Android XMPP PUSH 推送源代码,客户端、服务端实现Android推送,服务端使用tomcat服务器