Articles of android c2dm

为什么我通过Google云设备消息传递服务为我的设备获取多个有效令牌?

我刚刚添加了C2DMfunction到我的Android应用程序。 目前,如果在我的应用程序中启动了C2DM,则会发生以下情况。 我的应用程序发送注册意向 答案广播是由我的应用程序接收 设备令牌从意图中检索并发送到我的服务器 从那一刻起,一切正常。 客户端收到推送通知等。如果以下情况发生,则会出现问题: 用户在不禁用推送的情况下卸载应用程序。 (完全删除它不仅更新) 用户重新安装应用程序 如果在步骤5之后发送推送通知,我的应用程序仍然收到此通知。 看起来,从以前的安装检索的令牌仍然是活动的,并重新连接到我的应用程序的新实例。 这有以下问题: 重新安装我的应用程序但无意收到推送通知的用户不可能将自己从服务中删除,因为应用程序的新实例无法从我的服务器注销旧的令牌。 这是C2DM系统中的错误还是我的设置有问题? 更新 我遵循了伯顿的build议,做了以下工作: 为了testing目的,每次启动应用程序时,都只需启动一个注销Intent。 发送注销意向后,我的服务器上的推送通知不会发送到我的应用程序。 这似乎是窍门,但如果我现在去C2DM设置屏幕,并打开我的应用程序的推送通知所有旧的令牌再次活跃,我收到的信息,我没有注册在我的应用程序的当前安装。 下次更新 看来我不是唯一有这个问题的人: Android的C2DM:重复的消息到相同的设备和应用程序 我希望Google能够pipe理这些令牌,以便在发布新令牌之后,来自同一设备的旧令牌会被禁用。 我也希望在我发送一个unregister Intent之后,这个应用程序的所有标记都会被标记为无效或从Google Server中删除。 如果这是Google的特殊用例的devise决定,我不明白请赐教。

android c2dm注册ID

我阅读了Android Cloud到Device Messaging Framework的解释。 我们的应用程序成功注册到C2DM服务器后,我们会收到一个注册ID。 注册ID持续到应用程序明确注销自己,或直到Google刷新您的应用程序的注册ID。 Google究竟是什么时候为您的应用刷新注册ID? 我们如何知道它,所以我们可以再次注册并发送我们的新注册ID到我们的服务器。 谢谢。

无法在Google App Engine上部署Android App Engine项目

我在eclipse中的Android + Google App Engine中创build了一个微笑应用程序。 我正在尝试在Google应用引擎上部署该应用,但会显示错误消息 login猫: 无法更新:com.google.appengine.tools.admin.HttpIoException:发布到url时出错: https ://appengine.google.com/api/appversion/getresourcelimits?app_id=AppEngineTest2&version =1& 400错误的请求 客户端错误(400)该请求对于未指定的原因无效。 at com.google.appengine.tools.admin.AbstractServerConnection.send1(AbstractServerConnection.java:282) at com.google.appengine.tools.admin.AbstractServerConnection.send(AbstractServerConnection.java:235) at com.google.appengine.tools.admin.AbstractServerConnection.post(AbstractServerConnection.java:214) at com.google.appengine.tools.admin.ResourceLimits.remoteRequest(ResourceLimits.java:160) at com.google.appengine.tools.admin.ResourceLimits.request(ResourceLimits.java:127) at com.google.appengine.tools.admin.AppAdminImpl.doUpdate(AppAdminImpl.java:323) at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:52) at com.google.appengine.eclipse.core.proxy.AppEngineBridgeImpl.deploy(AppEngineBridgeImpl.java:400) at com.google.appengine.eclipse.core.deploy.DeployProjectJob.runInWorkspace(DeployProjectJob.java:148) at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) 任何一个有简单的例子(与源代码)的Android +谷歌应用程序引擎(c2dm)请分享它..

收到id和auth令牌后发送消息时发生c2dm 401错误

我看到很多类似的问题,但是尽pipe有些被接受,但是没有很好的答案。 我已经注册了C2DM。 我收到确认电子邮件。 然后,我写了一些简单的应用程序注册C2DM。 我得到了id(在模拟器和真实设备上试过)。 然后,我得到了用于C2DM注册的电子邮件(与用于获取ID的应用程序相同的电子邮件)的身份validation令牌(带curl)。 当我试图做推(也curl),我得到401错误(如auth令牌是错误的)。 我读了很多教程,而且我的想法已经不多了。

实施C2DM注册的最佳实践

我正在开发一个使用C2DM接收推送通知的应用程序。 我已经实现了整个C2DM电路(客户端和服务器),它工作正常。 目前我的应用程序有一个引导C2DM注册的button,当收到来自Google的注册ID令牌时,我在我的应用程序服务器中调用一个web服务来将设备与注册ID相关联。 我要在我的应用程序中实现身份validation,并且我有一些与C2DM注册处理相关的问题。 客户端应用程序(即Android应用程序)将有一个login屏幕作为第一个屏幕,以便用户可以input凭据。 一旦证书得到validation,我打算调用C2DM注册,以便用户与注册ID令牌关联。 这个可以吗? 在稍后的应用程序执行过程中,我可能会存储凭证或某种令牌,所以用户不需要再次input凭证,应用程序启动时是否也应该启动C2DM注册? 我知道Google最终可能会更新注册ID。 定期更新注册ID是不是一个好习惯? 如果是的话,什么时候应该适合? 注册ID令牌是否过期? 在客户端和服务器之间的注册ID不同步的罕见情况下会发生什么情况(例如,新的注册ID到达客户端,在这个新的注册ID的服务器上触发新的事件,然后注册ID到达服务器)? Google会处理这种情况吗? 我的应用服务器应该处理这种情况? 如果新的注册ID从Google到达时服务器无法访问会发生什么情况? 我是否应该退缩并安排闹钟重试? 你能想到其他的陷阱吗?

Android – 将消息发送到死线程上的处理程序,Toa​​st错误

我正在使用C2DM服务,当我收到消息的时候,在显示Toast消息的时候,我也遇到了“将消息发送给死线程中的处理程序”的错误,在这里我想查看到达的消息。 使用代码: @Override protected void onMessage(Context context, Intent intent) { Log.e("C2DM", "Message: arived"); Bundle extras = intent.getExtras(); if (extras != null) { //Toast.makeText(this.getApplicationContext(), (CharSequence) extras.get("payload"), Toast.LENGTH_LONG).show(); } } onMessage方法用于扩展C2DMBaseReceiver类。 吐司messatge永远不会显示。 这里有什么错误? 有没有灵魂? 编辑: 09-06 08:59:02.135: WARN/MessageQueue(5654): Handler{44e65658} sending message to a Handler on a dead thread 09-06 08:59:02.135: WARN/MessageQueue(5654): java.lang.RuntimeException: Handler{44e65658} sending message to a […]

Android的c2dm注册ID格式

我怀疑发布之后我会感到非常蠢,但​​是在这里。 我有两个主要问题: 1)什么是适当的正则expression式用于注册ID? 目前我有以下,但我一直没能find任何文件来支持这是否足够: '/^[a-z0-9_-]{40,255}$/i' 2)REGID是否包含“ – ”是“有效的”? 我知道android不能担心每种语言(在这种情况下,mysql)使用什么语言来发表评论等等,但是这让我有些不屑一顾。 到目前为止,我一直在使用杀毒软件(s),因为有可能被用于SQL注入。

在苹果推送通知服务中是否有推送通知服务?

我想为Android手机用户提供推送通知服务,Android中是否有推送通知服务,如Apple推送通知服务?

不允许开始服务意图X未经许可Y

04-25 14:16:30.931: E/AndroidRuntime(6638): FATAL EXCEPTION: main 04-25 14:16:30.931: E/AndroidRuntime(6638): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.exclusive26.igale/com.exclusive26.igale.Push_Activity}: java.lang.SecurityException: Not allowed to start service Intent { act=com.google.android.c2dm.intent.REGISTER pkg=com.google.android.gsf (has extras) } without permission com.google.android.c2dm.permission.RECEIVE 04-25 14:16:30.931: E/AndroidRuntime(6638): at android.app.ActivityThread.deliverResults(ActivityThread.java:2553) 04-25 14:16:30.931: E/AndroidRuntime(6638): at android.app.ActivityThread.handleSendResult(ActivityThread.java:2595) 04-25 14:16:30.931: E/AndroidRuntime(6638): at android.app.ActivityThread.access$2000(ActivityThread.java:121) […]

从广播接收机开始一个asynchronous的

我想知道,如果从广播接收机启动一个asynctask被认为是不好的做法? 我基本上注册与谷歌的C2DM服务器,然后当我拦截注册,广播接收器,我想发送到我的服务器。 完成这个的最好方法是什么?