【问题标题】:Android C2DM: Determine if push notification can be delivered nowAndroid C2DM:确定现在是否可以发送推送通知
【发布时间】:2012-03-27 14:19:53
【问题描述】:

有没有办法确定是否可以立即发送推送通知? 据我所知这是不可能的,但我不确定。

所以我的场景是这样的: 我有一个安卓应用 我有自己的服务器

我的 Android 手机上的应用程序应该与我朋友的 Android 手机上的应用程序通信。 现在我正在寻找一个实时通信框架,我想 C2DM 可以帮助我。

那么让我们说: 我在手机 A 上的应用程序应该向我在手机 B 上的应用程序写一条小消息。 让我们假设,电话 A 在线并且可以与我的服务器通信。所以电话 A 会将消息发送到我的服务器,而我的服务器现在会尝试将此消息传递给电话 B。

这就是我的服务器将尝试通过 C2DM 将消息传递到电话 B 的关键点,这也是我的服务器需要知道是否可以通过 C2DM 发送此消息的关键点。否则我的服务器应该使用另一种通信方式来传递消息,例如短信或其他方式。

所以重点是,我现在真的需要知道它是否可以通过 C2DM 传送到电话 B(当然我的服务器知道电话 B 的 C2DM 注册 ID)。 否则,例如如果电话 B 没有连接到互联网并且无法接收 C2DM 推送通知,我的服务器会向电话 B 发送短信。

是否可以确定电话 B 是否在线? 我尝试做的是接触每个用户(如果他的手机已打开)。如果他在线,则通过 C2DM,否则通过 SMS,以便在此时以任何方式传递消息。

注意: 我知道 C2DM 可以存储通知并在电话 B 在线时传递存储的通知,但这不是我想要使用它的方式。另请注意,我知道(架构)如何使用 C2DM。因此,应该从电话 A 传递到电话 B 的“消息”将不会直接在 C2DM 推送通知中传递,消息文本/敏感数据作为消息正文。当然,传递的消息只是一条“更新消息”,用于告诉我手机 B 上的应用程序发生了一些变化,应用程序现在应该连接到我的服务器以获取(轮询)最新状态的“短信”已经从电话 A 发送给您(电话 B)

【问题讨论】:

    标签: android push-notification android-c2dm


    【解决方案1】:

    有没有办法确定是否可以立即发送推送通知?

    没有。无法保证 C2DM 消息永远会被传递,更不用说立即传递了。

    是否可以判断手机B是否在线?

    手机 B 可以知道它是否在线。如果您使用某种长期持有的套接字连接(例如 XMPP)实现服务器,则该服务器可以知道它是否与电话 B 有打开的套接字连接。

    【讨论】:

    • 感谢您的回答。好吧,我想节省电池电量,所以这就是我通过 C2DM 实现它的原因。
    猜你喜欢
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    相关资源
    最近更新 更多