您的位置:首页 > 移动开发 > Android开发

Android c2dm 使用心得总结

2012-01-05 17:23 465 查看


关于 c2dm是什么? 不就多说了,***从youtube下载 Google I/O 2010 – Building push applications for Android (C2DM) 转发到youku 方便观看, 地址为:http://v.youku.com/v_show/id_XMjQ3MTg1NzA0.html

c2dm开发组提供的两个demo,似乎不是那么容易上手,可以试试最简单的的实例, Mark Murphy __The Busy Coder’s Guide To Advanced Android Development__ 的一个例子:https://github.com/commonsguy/cw-advandroid/tree/master/Push/C2DM

程序跑起来了,才有个直观的感受。c2dm整个流程是这样的:





简要说明一下:Android 客户端收到 registration_id 后,给你的app server发个http post,保存registration_id起来。然后你的appserver 给 https://android.apis.google.com/c2dm/send 这个url发送一些参数,就行了。

Mark Murphy的例子用到了Chrome
to Phone 一个可重用的包com.google.android.c2dm 用于处理底层的 C2DM 交互事务 (例如配置,任务队列管理等)。但是这个包也是有一些问题的,遇到 “C2DM E Registration error SERVICE_NOT_***AILABLE” 这个的Error,默认是没有去处理,你需要在AndroidManifest.xml 里声明处理 com.google.android.c2dm.intent.RETRY。

在申请google c2dm 记得ssh *** 注册就行了,firefox + autoproxy, 在规则添加 .google.com 即可。不然会遇到: “Sign Up for Android Cloud to Device Messaging” 链接被重置,提交时总是说还有一两项信息没有填写(其实都填全了)。

服务器端的实现

就是给 c2dm 服务器发 https post 请求,加上一些参数。 写得最简单明了,是这个帖子Android
push notifications (tutorial) 例子中的脚本可以再改进的, Google Auto Token 过一段时间才会失效,我测试所知道的是1个多月,所以可以把它保持起来,提供下次发送数据时使用。我自个儿也写了php实现的版本。关于发送效率,我也是感到比较头疼的,发送数据到几万个终端,如何并发处理?c2dm不支持并发发送数据。目前我只做到重用
http 连接,把registerIds放到队列里,发送失败了,放到队列尾部,重发。

除此之外,c2dm服务在国内很不稳定,把 app server 放在在国外才比较靠谱。

参考:

1. http://goobr.blogspot.com/2010/11/c2dm-sending-messages.html

If
you enjoyed this post, make sure you subscribe
to my RSS feed!


相关帖子:

Android
2.2系统在线升级的移植
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: