为什么Android C2DM推送消息总是不到达?

2023-12-02

我已经构建了一个功能正常的 C2DM 应用程序,通常它运行得很好,并且推送消息到达得很快。然而,我发现当我第一次启动应用程序或将其重新聚焦时,消息经常不会到达。

它们肯定发送成功(我收到 200 响应),并且消息格式肯定是正确的(稍后发送相同的消息效果很好)。故障可能会持续几分钟,然后突然再次开始工作,并在此后持续工作。

然而,即使在它开始工作之后,较旧的消息显然已经消失并且从未到达。消息肯定没有到达 - 我有大量的日志记录,突出显示任何到达的 C2DM 消息。

我完全清楚 C2DM 永远不会保证交付,因此我预计某些消息会失败,但根据我的经验,在某些情况下,它就是行不通。我显然想了解这是否是我在我的应用程序或 C2DM 服务本身中做错的事情。

哪些原因会导致C2DM消息传递失败? 如果消息无法传递,为什么 C2DM 服务器不从其队列中再次尝试? 相关 - 我应该仅在应用程序第一次启动时获取新的注册 ID,还是每次应用程序启动时刷新它?我目前执行后者(在应用程序中,而不是活动中)。


我意识到我犯了一个小学生的错误。每次应用程序启动时,我都会重新注册 C2DM。该过程有时需要相当长的时间,在此期间应用程序将不会收到发送到旧注册 ID 的推送消息。这就解释了为什么推送消息在启动应用程序后特别容易无法立即收到。

解决方案是确保仅当应用程序还没有注册 ID 时才请求注册 ID。推送消息现在工作得更加可靠。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么Android C2DM推送消息总是不到达? 的相关文章

随机推荐

  • 如何在 Bootstrap 3 中使用固定标题(导航栏)向下滚动表格行时将表格标题(thead)固定在顶部?

    引导布局fixed navbar 表格中有很多行 Issue 当我滚动页面导航栏时 它会在那里 因为它是固定的 当我滚动更多时 我希望表头固定在导航栏下 并且表 表体 的内容在没有滚动条的情况下滚动 像这样的东西 Codepen 小提琴 引
  • 禁用 Word 2010 中的“另存为”按钮

    我有以下代码 应该禁用 Word 2010 中的 另存为 按钮 下面的方法正在Document Startup event private void DisableSaveAsButton Object MenuBar 40 Object
  • tkinter 如何将小部件向右对齐,而与左侧小部件的长度无关?

    我想将条目小部件向右对齐 而与左侧标签的宽度无关 ID 标题的宽度应该不重要 无论标题的宽度是多少 条目小部件都应该对齐 这是我的代码 import tkinter as tk from tkinter import ttk root tk
  • 如何在Android中将两个音频文件合并为一个[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我想合并两个音频文件 A音频文件 B音频文件 AB音频文件 经过一番搜索后 我认为以下步骤会起作用 使用 AudioTrack 从音频文件中解码 PCM 结合PCM 上述步骤是否正确 如果
  • Facebook 嵌入视频与 iframe 无法正常工作

    我们使用 iframe 在我们的网站中嵌入 Facebook 视频 之前工作正常 但从最近几天开始 网站无法加载视频 我们也尝试过使用简单的网页 但没有成功 下面是我们正在使用的代码 如果有人可以提供快速帮助 请告诉我 只需使用此链接 这对
  • 有效地替换字符串中的所有重音字符?

    为了一个穷人的实施near 客户端的排序规则正确排序我需要一个 JavaScript 函数来实现高效的字符串中的单个字符替换 这就是我的意思 请注意 这适用于德语文本 其他语言的排序不同 native sorting gets it wro
  • Jstree:dblclick 绑定参数数据未定义

    我尝试使用好的库jstree但我有一些奇怪的问题dblclick捆绑 这是我的代码 basic html jstree themes url http mywork shinframework shinfw themes redmond c
  • 嵌套 INotifyPropertyChanged 类不起作用

    得到了一些代码 得到了意想不到的结果 如果我用 Myclass 替换嵌套类 那就没有问题了 我想念什么 我是否绑定文本 到其他控件 或绑定图像并不重要 xaml代码
  • Android:是否可以在屏幕上同时创建底部和顶部选项卡?

    我想知道是否可以在顶部和底部设置不同的选项卡 单击时会导致不同的活动 谷歌搜索但没有找到任何相关内容 Thanks Android 的好处是几乎所有你想做的事情都可以实现 如果我们要更改您的 XML 我们会将其更改为以下内容
  • 用于淡入和淡出视图的 Angular 4 动画

    我只是希望视图在路线更改时淡入和淡出 我似乎已经正确设置了组件 但我认为需要使动画语法正确 这是我目前的动画尝试 我将此动画导入到我的组件中 import trigger state animate style transition fro
  • 使用 PHP API 进行 FB.login

    我已经设置了一个 Canvas 页面 单击表单提交按钮即可实现 FB login 在以下请求期间 它尝试通过 facebook gt api me 来自 Github 的最新 API 版本 访问用户数据 它可以在 Firefox 和 Chr
  • 检测序列参数的正确方法?

    我想编写一个接受参数的函数 该参数可以是序列或单个值 value的类型有str int等 但是我don t希望将其限制为硬编码列表 换句话说 我想知道参数 X 是一个序列还是我必须转换为序列以避免以后出现特殊情况的东西 我可以 type X
  • 错误:格式“%s”需要“char *”类型的参数,但参数 2 的类型为“int”[-Wformat=]

    我目前正在尝试做自己的 shell 它必须是多语言的 所以我尝试实现一个读取 txt 文件中的行的函数 include
  • 如何在反应材料表上添加精美的滚动条?

    我在用着反应材料表并想要一个像样的滚动条而不是默认的分页 我努力了反应自定义滚动但它没有按照我的意图工作 我的应用程序的默认滚动条已激活 还有一件事 我怎样才能将这种类型的滚动应用到桌体上 import CustomScroll from
  • Fragment 和 Anko toast 的“接收器类型不匹配”

    我正在尝试使用 Jetbrains 的 Anko 库在我的应用程序中轻松显示 Android toast 消息 这是相关的代码片段 val message CharSequence Recycled holder taskEditText
  • 从 IntentService 向 Activity 发送消息

    我在同一个应用程序中有一个活动和一个intentService 该服务必须在活动结束后继续运行 因此我不想绑定 我已经在谷歌上搜索了几个小时 但找不到一个关于如何做到这一点的好例子 我可以启动该服务并向其传递额外内容 但现在该服务必须使用
  • iPad 上的 iAd:横向 iAd 方向不正确

    这仍然是一个相对较新的主题 因此不确定有多少人必须在 iPad iOS4 2 1 上实现 iAd 但基本上 我让 iAd 横幅以横向模式显示 并且显示正确 唯一的问题是 当我单击 测试广告 时 它会以纵向模式显示测试广告 即 设备仍处于横向
  • 有没有办法使用 Video.js 从视频标签获取当前字幕的文本?

    我想在播放视频期间获取当前字幕的文本 并且实现自己的字幕块 即隐藏原始字幕 并以几种不同的方式使用该信息 目前我使用videojs为我的球员 有什么方法可以从中获取当前标题的字符串吗 此代码获取当前提示并放入 span element fu
  • R curl::has_internet() FALSE 即使有互联网连接

    使用 R 包 Eurostat 从 EuroSTAT 下载数据时出现了问题 Population data by NUTS3 pop data lt subset eurostat get eurostat demo r pjangrp3
  • 为什么Android C2DM推送消息总是不到达?

    我已经构建了一个功能正常的 C2DM 应用程序 通常它运行得很好 并且推送消息到达得很快 然而 我发现当我第一次启动应用程序或将其重新聚焦时 消息经常不会到达 它们肯定发送成功 我收到 200 响应 并且消息格式肯定是正确的 稍后发送相同的