猜测C2DM是否已连接的方法

2024-01-12

我正在尝试对是否可以接收 C2DM 消息进行最佳猜测。

我创建了一个应用程序,它依赖于在物理上无法访问的情况下将信息推送到手机。我知道 C2DM 不能保证传送,但我至少想知道何时可以传送消息;如果不是,我们就会退回到我们自己的推送服务(并且实际上可以知道我们何时连接)。

我注意到即使没有登录谷歌帐户,Android 上的 C2DM 仍然会发出身份验证令牌;在这种情况下,消息似乎仍然被传递,尽管声明不应该传递。如果 GTalk 未连接(防火墙或其他原因),则在请求身份验证令牌时根本不会返回任何响应。当手机处于飞行模式时,身份验证令牌将返回到应用程序。这意味着它并不像检查互联网是否可用那么简单。我找不到可靠的方法来检查 GTalk 是否已登录。

再说一遍,我不需要保证消息的传递,但我至少想知道传递是否均匀possible。有人有有趣的解决方案吗?


去看这个视频 http://www.youtube.com/watch?v=PLM4LajwDVc,这是一次关于 C2DM、如何使用它以及它如何工作的 Google I/O 演讲。 AFAIK,你无法知道它是否已连接。可能大多数时候他们甚至不知道(直到他们必须传递消息并失败)。

但是,强烈建议(也在视频中)不要通过 C2DM 发送重要数据(因为消息可能会丢失)。该服务只能用作“网络小工具”(占​​用空间尽可能小)。您的应用程序应该被这个痒痒唤醒,并且它应该开始获取它需要的信息itself.

现在,如果你这样实现的话,应该很容易实现轮询机制。由于您已经将“痒痒”与实际的信息检索分开,因此如果没有痒痒,您可以每隔一段时间触发一次检索。

您可以使用 ping 之类的方法来检查 C2DM 是否已连接:

  1. 通过 C2DM 向手机发送消息
  2. 应用程序接收(或未接收)消息并将“pong”发送回您的服务器
  3. 服务器在将设备标记为“离线”之前等待“乒乓”预定的时间(我想说 1-2 分钟)。

Edit:依靠 GTalk 是不可行的。 GTalk 就像您的应用程序一样依赖于 C2DM,它没有任何“额外”的东西。此外,GTalk 并不存在于所有设备上。我不确定 GTalk 应用程序如何确定它是否离线(不幸的是,它不是开源的),但我猜它只是尝试 ping 服务器并失败。

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

猜测C2DM是否已连接的方法 的相关文章

  • Android-ListView-performItemClick

    当我尝试使用时遇到一些困难执行项目单击ListView 的功能 我想要做的就是以编程方式在列表的第一项中执行单击 我怎样才能做到这一点 我在文档中查找了该函数 但我并不真正理解它的参数 我尝试过类似的事情 myListView perfor
  • 如何捕获 Runnable 中的封闭范围

    我正在尝试对 a 进行一系列更新HandlerThread使用下面的类 但我有几个关于变量捕获在 Java 中如何工作的问题 1 Is ret通过引用从封闭范围捕获 2 Does this参考Runnable 或者是从封闭范围捕获的 bon
  • 从 admob 独立 SDK 切换到 Google Play 服务 SDK 时,apk 大小会膨胀

    使用 Admob SDK 我的 apk 大小为 230Kb 当用 google play services SDK 替换 Admob SDK 时 它是 1 5MB 膨胀了 6 倍以上 我想完整的 Google Play 服务客户端 SDK
  • 强制关闭导致HTTP实体可能不为空

    这里是发送数据 Http 的完整代码 asynctask private class MyAsyncTaskPupuk extends AsyncTask
  • 在 Android 上检测已接听的拨出电话

    我知道这个问题已经被问过很多次了 但没有答案 但我仍然希望有人终于解决了这个问题 问题 我有一台运行 Android 2 3 的未 root 设备 我需要创建一项服务 打电话 等待呼叫被应答 接听电话后挂断电话 有超时 和其他许多人一样 我
  • Android 测试 java.lang.NoClassDefFoundError 由于 Fest-Android 出现错误

    我目前正在我的项目中实现 Android 版 Fest 但我似乎遇到了依赖问题 如果我在不包含 Fest 库的情况下运行测试 测试将正常运行 一旦我添加了 Fest 库 测试就不再运行 相反 会抛出异常 我的项目使用以下依赖项 compil
  • 收到“提供的 API 密钥已过期”。使用 Places API 时出错

    我已经从 Google 控制台为 Places API 密钥生成了服务器密钥 但每当我访问该服务时 我都会收到 提供的 API 密钥已过期 错误 我已尝试重新生成密钥 但仍然出现相同的错误 我遇到了同样的问题 但终于解决了 Google 地
  • Android 和 iOS 中的应用程序文件大小差异

    通过使用两个应用程序分发服务 Android 市场和 Apple 应用程序商店 我发现了一个谜团 Apple 应用程序的文件大小通常大于 Android 应用程序 我似乎找不到任何对这些差异的解释 而且这似乎是一个未触及的主题 我尝试过分配
  • Android:让用户从图库中选择图像或视频

    是否可以以这样的方式启动图库 以便同时显示图片和视频 Thanks 从图库中选择音频文件 Use MediaStore Audio Media EXTERNAL CONTENT URI Intent intent new Intent In
  • Android 上 Java 库中的代码出现 NoClassDefFoundError

    我的用户经常遇到错误 应用程序在启动期间崩溃 当应该加载 MainActivity 时 VM 显然找不到该类 我不明白为什么 该应用程序的架构是 我的免费版和专业版都使用一个通用项目 不知道是否相关 请参阅下面的堆栈跟踪 有什么想法吗 ja
  • Firebase 云消息传递 - 如何验证令牌?

    我正在使用 Firebase Cloud Messaging FCM 并且每次在客户设备上生成新令牌时 都会根据下面的缩写代码 我将此新令牌发送到我的服务器数据库 云 并将其保存在其中 以便能够发送未来推送通知使用 CFM API 从服务器
  • 如何编写 adb jdwp + adbforward 脚本?

    我正在尝试使用命令行和脚本工具调试 Android 应用程序 我已经受够了 Android Studio 占用我的 CPU 要连接到我的应用程序 我需要adb jdwp获取 pid 然后adb forward tcp 8700 jdwp
  • Android/三星 Galaxy S 模拟器

    有没有办法在三星银河模拟器或类似的东西上尝试我的项目 我的项目在 HTC Legend 上运行 但在该设备上崩溃了 我如何在 android eclipse 上设置三星 Galaxy s 我设置了 W800 854 2 2 AVD 但它可以
  • android device.getUuids 返回 null

    我正在尝试使用低功耗蓝牙 BLE 通过 Android 应用程序连接到 Arduino Uno 我正在 Android Studio 上进行开发 使用 Samsung Galaxy S4 和 Android 版本 5 0 1 进行测试我点击
  • 可下载字体例外

    我决定使用可下载字体 https developer android com guide topics ui look and feel downloadable fonts html在我的项目中 IS 按照指南中的建议实施了所有内容 当我
  • 谷歌的Json解析Gson库:JsonElement和JsonObject有什么区别?

    public abstract class JsonElement extends Object 表示 Json 元素的类 它可以是 JsonObject JsonArray JsonPrimitive 或 JsonNull public
  • Android Studio错误的含义:未注释的参数覆盖@NonNull参数

    我正在尝试 Android Studio 创建新项目并添加默认值后onSaveInstanceState方法创建 MyActivity 类 当我尝试将代码提交到 Git 时 我收到一个我不明白的奇怪错误 代码是这样的 我得到的错误是这样的
  • 如何以相同的意图从相机获取全尺寸图片和缩略图

    我一直需要找到这个问题的解决方案 我已经从这个社区搜索并测试了许多解决方案 但任何人都适合帮助我 我有两个活动 第一个活动拍摄一张照片并将其发送到另一个活动 该活动有一个 ImageView 来接收该照片 直到这里我遇到问题 以及一个在数据
  • 如何在jetpack compose中删除文本基线下方的空间?

    目前我得到这个 但我想要这样的东西 而且 50 和 min 中的文本也应该与顶部对齐 My code Row verticalAlignment Alignment Bottom Text text 18 color MaterialThe
  • 如何在不下载子项的情况下从 Firebase 获取子项密钥?

    我有一个 Firebase 数据库 其中的节点 items 有很多子项 我想导入子项键的列表 由于每个子项都包含相当多我对此不感兴趣的数据 因此我想仅下载子项密钥 以最大程度地减少传输的数据量 为了便于说明 假设我有以下数据结构 然后我想获

随机推荐

  • LLVM 检索 AllocaInst 的名称

    我正在尝试检索传递给 a 的指针的名称cudaMalloc https docs nvidia com cuda cuda runtime api group CUDART MEMORY html group CUDART MEMORY 1
  • UI Router 从列表页面加载详细信息页面

    使用 ui router 的 AngularJS 应用程序 我的列表页面加载正确 但是当单击列表页面上的链接时 我的 url 发生了变化 但页面上的 html 没有变化 它仍然保留在列表页面上 这个路由有什么问题吗 app js var m
  • CGContext 擦除错误

    我不断收到此错误 Jan 31 13 56 51 Michaels MacBook Air local CocoaDrawing 2129
  • Spring加密和解密属性文件中的API密钥

    原始问题 我有一个位于 Tomcat 中的属性文件和一个位于 src test resources 中的用于测试的属性文件 目前我有以下设置 我的属性文件加载到我的 XML 文件中配置文件
  • 在 Asp.Net Core Web API 中使用 MassTransit 消息时如何对用户进行身份验证?

    我有几个使用 Bearer 身份验证的 Asp Net Core Web APIIdentityServer4 AccessTokenValidation用于内省令牌 验证用户身份并创建声明的中间件 这对于 HTTP 请求来说效果很好 我正
  • Django 模型 = 业务逻辑 + 数据访问?或者数据访问层应该从 django 模型中分离出来?

    在 Django 中 建议的软件架构是将所有业务逻辑和数据访问放在模型中 但是 一些同事建议数据访问层应该与业务逻辑 业务服务层 分开 他们的理由是 如果使用不同的数据源 数据访问层可以隔离更改 他们还表示 业务逻辑可以存在于多个模型中 但
  • add如何使 django post_save 信号仅在创建期间运行

    我在项目中使用 django notifications 并且我想在使用信号创建模型时通知特定用户 但是在更新模型时 post save 也会运行 如何防止这种情况并仅运行 post save 方法当创建模型时 模型 py class Ca
  • 为什么简单的程序会占用这么多的存储空间?

    我用 C 创建了一个简单的 hello world 程序 如下所示 include
  • 我可以从 fsx 文件中安装/引用软件包吗?

    我正在尝试找到一个简单的解决方案 不需要太多手动工作来参考包 在 fsx 文件内 LinqPad 4 lets me simply add nuget packages 没有智能感知或自动完成 下载某些类型的软件包后删除软件包 模板 htt
  • IClientStore 的自定义实现

    我们使用 Entity Framework Core 和 Identityserver4 来存储配置数据 我们是否需要自定义实现 IClientStore 即 FindClientByIdAsync 接口来从数据库获取客户端 public
  • C++ 包含有和没有 .h [重复]

    这个问题在这里已经有答案了 可能的重复 在 C 中使用 include 和 include 有什么区别 https stackoverflow com questions 301586 what is the difference betw
  • ssh server bash -c "cd /tmp && git pull" , cd 不起作用,需要先添加 echo

    我在 ubuntu 15 04 上 我的 ssh 客户端版本是 OpenSSH 6 9p1 Ubuntu 2ubuntu0 2 OpenSSL 1 0 2d 9 Jul 2015 当我尝试运行以下命令时ssh admin server ba
  • FactoryBot - 创建嵌套对象

    我正在学习如何在 Rails 中进行测试 并且正在为我的问题模型编写一个工厂 require factory bot FactoryBot define do factory question do sequence content n q
  • 获取 C 网页源代码的最有效方法是什么?

    In PHP我可以简单地做到这一点 file get contents http stackoverflow com questions ask 执行相同操作的最短代码是什么C UPDATE 当我使用curl编译示例时 出现如下错误 unr
  • 重写谷歌自定义搜索字符串

    我之前的自定义谷歌搜索是这样显示的 第一个链接 http raskim lt controller function 音乐 cx 014092587915392242087 3Agc6l6xlpkmq cof FORID 3A11 q th
  • Azure 云应用程序 ERR_CONNECTION_TIMED_OUT

    我想在 azure 容器服务中部署基于容器的应用程序 并遵循本教程 https learn microsoft com en us azure container service dcos swarm container service m
  • 禁止创建临时对象

    在调试多线程应用程序中的崩溃时 我终于在以下语句中找到了问题 CSingleLock m criticalSection TRUE 请注意 它正在创建 CSingleLock 类的未命名对象 因此临界区对象在此语句之后立即解锁 这显然不是程
  • Delphi GUI 设计规范和指南 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我一直在寻找一种方法来标准化我的应用程序布局以提高我的工作效率 因为我浪费了太多时间在每个表单和对话框
  • PackedArrays 有快速的产品操作吗?

    在 Mathematica 中 包含所有机器大小的整数或浮点数的向量 或矩形数组 可以存储在压缩数组中 这些对象占用的内存较少 并且某些操作对它们的速度要快得多 RandomReal如果可能的话 生成一个压缩数组 压缩数组可以用以下命令解压
  • 猜测C2DM是否已连接的方法

    我正在尝试对是否可以接收 C2DM 消息进行最佳猜测 我创建了一个应用程序 它依赖于在物理上无法访问的情况下将信息推送到手机 我知道 C2DM 不能保证传送 但我至少想知道何时可以传送消息 如果不是 我们就会退回到我们自己的推送服务 并且实