- 浏览: 1504609 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (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 1490http://www.cnblogs.com/xiaowen ... -
Windows的adb shell中使用vi不乱码方法及AdbPutty
2013-12-27 10:17 7576http://www.veryhuo.com/down/ht ... -
AppMobi推出新XDK,可创建测试PhoneGap项目
2012-09-03 13:39 2637AppMobi今天发布了一个新的工具PhoneGap Mobi ... -
Sencha
2012-09-03 12:59 1185http://www.sencha.com/ Se ... -
jQuery Mobile学习
2012-09-01 12:33 1691使用Jquery Mobile设计Android通讯录 ... -
BackBone
2012-09-01 12:34 1260Backbone.js 是一种重量级javascript M ... -
jQTouch
2012-08-30 15:57 984A Zepto/jQuery plugin for mobil ... -
SwiFTP
2012-08-30 15:43 1307SwiFTP is a FTP server that run ... -
kWS
2012-08-30 15:41 1198kWS is a lightweight and fast W ... -
jQuery Mobile
2012-08-30 15:07 1027http://jquerymobile.com/ -
PhoneGap
2012-08-30 15:07 1044http://phonegap.com/ -
Android Button background image pressed/highlighted and disabled states without
2012-08-06 12:49 1678http://shikii.net/blog/android- ... -
[AndriodTips]Image, saved to sdcard, doesn't appear in Android's Gallery app
2012-08-04 16:15 1158http://stackoverflow.com/questi ... -
Voice detection for Android
2012-07-23 11:39 2347Here it is, my fist JAVA applic ... -
[AndroidTip]local reference table overflow (max=512)的错误解决
2012-07-22 22:56 6049JNI层coding经常会遇到ReferenceTable o ... -
[AndroidTip]EditText如何初始状态不获得焦点?
2012-07-22 15:35 1226最简单的办法是在EditText前面放置一个看不到的Linea ... -
[AndroidTip]android textview滚动条
2012-07-21 14:29 1298本来是想做一个显示文字信息的,当文字很多时View的高度不能超 ... -
Google公布Android 4.1完整功能
2012-07-16 09:48 3185http://www.android.com/about/je ... -
Android开发:使用AudioTrack播放PCM音频数据【附源码】
2012-07-13 15:20 20867http://www.linuxidc.com/Linux/2 ... -
Android上的行车记录仪
2012-07-11 22:31 2010MyCar Recorder DailyRoads
相关推荐
在Android平台上,Push机制是一种重要的应用功能,它允许应用程序接收来自服务器的实时消息,而无需持续保持网络连接或后台运行。这种机制对于提高用户体验、节省电池寿命以及提供即时通知至关重要。下面将详细介绍...
Android C2DM 从服务器端将数据push到客户端
从Android 2.2版本开始,Google引入了Cloud to Device Messaging (C2DM)框架,这是一个用于在Android设备与服务器之间建立高效、可靠通信的推送服务。C2DM简化了推送消息的过程,使得开发者可以轻松地在应用中集成推...
C2DM是Android平台早期的一种推送通知服务,允许服务器向注册的Android设备发送消息,从而实现远程唤醒应用或者更新数据的功能。在本文中,我们将深入理解C2DM服务器端的开发流程,以及如何与Android客户端进行通信...
在Android系统中,WAP PUSH(Wireless Application Protocol Push)是一种技术,用于向移动设备推送数据,如短信、彩信或者应用程序更新等。WAP PUSH允许服务器主动将信息推送到用户的手机上,而无需用户主动请求。...
在本文中,我们将深入探讨Android C2DM的工作原理、实现步骤以及`AndroidC2DMDemo`项目中的关键代码解析。** **一、Android C2DM服务概述** C2DM服务是Google为开发者提供的一种轻量级通信机制,用于从互联网...
在Android系统中,Google提供了Cloud to Device Messaging(C2DM)服务,它是一个帮助开发者从服务器向Android应用程序发送数据的平台。C2DM服务简化了服务器与移动应用之间的通信,允许服务器向设备发送应用程序...
在Android开发中,XMPP可以被用来构建服务器到设备的推送系统,尤其是当Google的C2DM(Cloud to Device Messaging)服务不能满足需求时。 C2DM是Google为Android提供的一个推送服务,但它仅支持2.2及更高版本的系统...
总的来说,Android Push涉及到服务器和客户端之间的交互,需要理解FCM的工作原理,掌握如何在服务器端发送消息,以及在Android客户端接收和处理这些消息。这是一个涉及网络通信、异步处理、服务和广播接收器等多个...
在Android平台上,实现即时通知通常会借助Google的云消息推送服务(Google Cloud Messaging,简称GCM),但在iOS系统中,对应的则是Apple Push Notification service(APNs)。然而,这里提到的"android apns"可能是...
### Android WAPPush详解 #### 一、基本概念与应用场景 **WAPPush**是一种能够将特定站点或业务的链接通过短信形式发送到支持WAPPush功能手机的技术。这项技术的核心价值在于它能够极大地简化用户查找和访问所需...
在Android平台上实现Server Push技术,MQTT(Message Queuing Telemetry Transport)协议是一个常见的选择。MQTT是一个轻量级的发布/订阅模型的网络协议,主要用于低带宽、高延迟或不可靠的网络环境中,特别适合...
综上所述,Android推送应用的开发涉及到多个方面,包括数据同步策略的选择、高效的消息传递机制以及对底层通信机制的理解。通过采用合适的策略和技术,开发者可以构建出既能够提供实时信息更新又能有效保护用户设备...
在Android开发中,Push短信是一种常见的消息传递方式,特别是在MMS(Multimedia Messaging Service)不支持Push机制的情况下。Push短信协议解析是理解如何接收和处理此类短信的关键,这对于构建高效、可靠的通信应用...
在开发Android应用时,向用户实时推送通知是必不可少的功能,Android提供了多种推送通知方案,包括C2DM(Cloud to Device Messaging)、MQTT(Message Queuing Telemetry Transport)和XMPP(Extensible Messaging ...
PUSH注册机制在JAVA移动应用程序开发中的应用非常广泛,如在无线移动网络中,PUSH技术可以通过主动发送信息来实现用户信息查询,从而解决无线移动网络所存在的问题。 PUSH注册机制是JAVA移动应用程序开发中的一种...
附件里有3个压缩包,分别是基于udp,xmpp,wmqtt实现push机制的客户端代码,可以参考http://tokudu.com/post/50024574938/how-to-implement-push-notifications-for-android,哈哈,不过是英文的。
1. **GCM (Google Cloud Messaging)**:早期Android系统中,Google提供了GCM服务,用于实现应用的后台消息推送。但自2018年起,GCM已被FCM(Firebase Cloud Messaging)取代。 2. **FCM (Firebase Cloud Messaging)...
1. **Android Push通知概述**:Android系统提供了多种机制来实现推送通知,最常见的是Google的Firebase Cloud Messaging (FCM),前身为Google Cloud Messaging (GCM)。FCM是谷歌提供的免费服务,用于在服务器与...
在Android平台上,构建一个单通道多应用Push系统是一项复杂但高效的设计,旨在优化资源使用,降低设备能耗,并确保消息的实时传递。以下是该系统中涉及的关键知识点的详细说明: 1. **AIDL(Android Interface ...