gpt4 book ai didi

android - 猜测 C2DM 是否已连接的方法

转载 作者:IT老高 更新时间:2023-10-28 23:32:59 28 4
gpt4 key购买 nike

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

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

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

同样,我不需要保证消息的传递,但我至少想知道传递是否可能。有没有人有有趣的解决方案?

最佳答案

去看this video ,这是一个关于 C2DM、如何使用它以及它是如何工作的 Google I/O 演讲。 AFAIK,您不知道它是否已连接。可能大多数时候他们甚至都不知道(直到他们不得不传递消息并失败)。

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

现在,如果您以这种方式实现它,那么实现轮询机制应该很容易。由于您已经将“tickle”与实际信息检索分开,如果没有tickle,您可以每隔一段时间触发一次检索。

检查 C2DM 是否已连接的方法类似于 ping:

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

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

关于android - 猜测 C2DM 是否已连接的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7899359/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com