有没有办法确定是否可以立即发送推送通知? 据我所知,它不可能,但我不确定。
所以我的场景看起来像这样: 我有一个Android应用程序 我有自己的服务器
我的Android手机上的应用应该在我的朋友安卓手机上与我的应用进行通信。 现在我正在寻找一个实时的通信框架,我想C2DM可以帮助我。
让我们说: 我在手机A上的应用程序应该在手机B上向我的应用程序写一条消息。 让我们假设,手机A在线,可以与我的服务器通信。因此,电话A会将消息发送到我的服务器,我的服务器现在会尝试将此消息发送到电话B.
关键是,我的服务器会尝试通过C2DM将消息传递给电话B,这也是我的服务器需要知道的点,是否可以通过C2DM发送此消息。否则我的服务器应该使用另一种通信方式来传递消息,比如短信或其他什么。
所以重点是,我真的需要知道在这个时刻是否可以通过C2DM传送到电话B(当然我的服务器知道电话B的C2DM注册ID)。 否则,例如,如果电话B未连接到互联网且无法接收C2DM推送通知,我的服务器将向手机B发送短信。
如果手机B在线,是否有可能停止? 我尝试做的是,达到每个用户(如果他的手机打开)。如果他在线,那么通过C2DM,或者通过短信,以便在此刻以任何方式传递消息。
注意: 我知道C2DM可以存储通知并在手机B上线时提供存储的通知,但这不是我想要使用它的方式。另请注意,我知道(架构)如何使用C2DM。因此,应该从电话A传送到电话B的“消息”将不会直接在C2DM推送通知中传送,消息文本/敏感数据作为消息正文。当然,传递的消息只是一条“更新消息”,告诉我的应用程序在电话B上,某些内容已经发生变化,应用程序现在应该连接到我的服务器以获取(轮询)最新状态,并显示“短信”从电话A发送给您(电话B)
答案 0 :(得分:1)
有没有办法确定是否可以立即发送推送通知?
没有。无法保证C2DM消息将永远交付,更不用说了。
如果手机B在线,是否有可能停止使用?
电话B可以知道它是否在线。如果您实现具有某种长期套接字连接的服务器(例如,XMPP),该服务器可以知道它是否与电话B具有打开的套接字连接。