Android上的Push Notifaction和XMPP
2011-10-13 18:33
155 查看
Android有个让人赞赏的特征:实时的同步。
1)如果你有新的Gmail邮件,手机可以马上收到邮件通知,这个中间可能有2,3秒的延迟,一般感觉还是很及时的;
2)如果你的联系人和Google Contanct是关联的话,你用桌面浏览器访问Gmail,修改联系人信息,很快新的联系人信息就会同步到你手机上。
最简单的实现可能用轮询(Polling)了,但这种方式有缺点:一则增大服务器的负担,想想如果每个客户端每隔半小时访问服务器,而大多数情况下服务器是没有更新数据的,对比起来服务器的负担就很浪费了,半小时的时间又很难做到实时的更新…;二则对于手机这种客户端,轮询浪费电源这个手机最宝贵的资源。
解决的方式是长连接,有好几种,这里讲的比较全面:超越轮询?考虑PubSub、Push和MOM。也可用类似Comet的长连接,而Android里面用的是XMPP。
当运行了上面的第二种操作后,在logcat里面可以看到如下log:
11-02 21:45:08.706: DEBUG/Smack/Packet(148): [READ] <messageid=”xL62aX-26″ stanza-id=”269508591457″to=”fkpwolf@gmail.com/androidfCv23kaFEJQd0Mc” from=”gmail.com”type=”headline”><data xmlns=”google:mobile:data”category=”GSYNC_TICKLE”token=”http://www.google.com/m8/feeds/contacts/fkpwolf@gmail.com/base2_property-android”from-trusted-server=”true”><app-data
key=”account”value=”fkpwolf@gmail.com” /></data></message>
网上查找一番后会发现Smack是XMPP一个比较流行的客户端lib,而这里面的message正是XMPP一种类型为headline的消息,为通知类的消息,而聊天的则为chat类型。虽然Smack是开源的,Android里面的这部分做的很private,search代码没有任何发现。Google虽然不做恶,但是也不是做善事的。
剩下部分请移步这里:http://www.fkpwolf.net/2009/11/15/android%e4%b8%8a%e7%9a%84push-notification%e5%92%8cxmpp2/
1)如果你有新的Gmail邮件,手机可以马上收到邮件通知,这个中间可能有2,3秒的延迟,一般感觉还是很及时的;
2)如果你的联系人和Google Contanct是关联的话,你用桌面浏览器访问Gmail,修改联系人信息,很快新的联系人信息就会同步到你手机上。
最简单的实现可能用轮询(Polling)了,但这种方式有缺点:一则增大服务器的负担,想想如果每个客户端每隔半小时访问服务器,而大多数情况下服务器是没有更新数据的,对比起来服务器的负担就很浪费了,半小时的时间又很难做到实时的更新…;二则对于手机这种客户端,轮询浪费电源这个手机最宝贵的资源。
解决的方式是长连接,有好几种,这里讲的比较全面:超越轮询?考虑PubSub、Push和MOM。也可用类似Comet的长连接,而Android里面用的是XMPP。
当运行了上面的第二种操作后,在logcat里面可以看到如下log:
11-02 21:45:08.706: DEBUG/Smack/Packet(148): [READ] <messageid=”xL62aX-26″ stanza-id=”269508591457″to=”fkpwolf@gmail.com/androidfCv23kaFEJQd0Mc” from=”gmail.com”type=”headline”><data xmlns=”google:mobile:data”category=”GSYNC_TICKLE”token=”http://www.google.com/m8/feeds/contacts/fkpwolf@gmail.com/base2_property-android”from-trusted-server=”true”><app-data
key=”account”value=”fkpwolf@gmail.com” /></data></message>
网上查找一番后会发现Smack是XMPP一个比较流行的客户端lib,而这里面的message正是XMPP一种类型为headline的消息,为通知类的消息,而聊天的则为chat类型。虽然Smack是开源的,Android里面的这部分做的很private,search代码没有任何发现。Google虽然不做恶,但是也不是做善事的。
剩下部分请移步这里:http://www.fkpwolf.net/2009/11/15/android%e4%b8%8a%e7%9a%84push-notification%e5%92%8cxmpp2/
相关文章推荐
- android消息推送-XMPP
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- [转]Android推送方案分析(MQTT/XMPP/GCM)
- 用XMPP实现完整Android聊天项目
- Android基于XMPP Smack openfire 开发的聊天室(一)【会议服务、聊天室列表、加入】
- Android面试题-与XMPP相关试题一
- Android基于XMPP Smack openfire 开发的聊天室(四) 【创建房间、表单;报文】
- openfire,smack,XMPP,android下的会议室,聊天室的实现
- android基于Xmpp的即时通讯开发
- Android平台下基于XMPP的IM研究(一)
- Android基于XMPP Smack Openfire下学习开发IM(四)单人聊天和多人聊天(发送消息、接收消息)
- 基于XMPP实现android客户端与服务器的交互
- android XMPP
- Android基于XMPP Smack Openfire下学习开发IM(四)单人聊天和多人聊天(发送消息、接收消息)
- Android推送方案分析(MQTT/XMPP/GCM)
- android xmpp开发 asmack实现断线自动重连
- 基于xmpp openfire smack开发之Android消息推送技术原理分析和实践[4]
- Android端服务器推送技术原理分析及XMPP简单的使用(转)
- 基于XMPP实现的Openfire的配置安装+Android客户端的实现
- Android推送方案分析(MQTT/XMPP/GCM)