Android : 通过 SERVER 获取在线或离线状态

Posted

技术标签:

【中文标题】Android : 通过 SERVER 获取在线或离线状态【英文标题】:Android :Get Online or Offline status through SERVER 【发布时间】:2012-06-22 05:59:44 【问题描述】:

我正在 android 4.0.3 即 ICS 版本中创建一个应用程序,它在客户端登录到应用程序时连接到服务器。我试图在客户端通过服务器联机或脱机时获取客户端的状态并查看应用程序屏幕。我无法继续。谁能说我:

是否可以通过服务器获取用户状态?

1-- 如何进行第一步...?

2-- 我应该如何从服务器获得客户端已连接并查看到其他客户端示例的响应 - 当我们登录到 Skype 时,我们的状态显示可用绿色单选按钮,以同样的方式我怎样才能得到它。 ?

如果有人指导我,它将非常有帮助。 非常感谢..

【问题讨论】:

【参考方案1】:

我假设您正在尝试开发聊天应用程序?

如果是这种情况,请尝试使用 XMPP 库。 XMPP 广泛用于聊天应用程序,包括 Facebook 聊天(我认为还有 Google talk),并且有大量可用的开源库。

否则,如果您只想将实时通知作为全局的一部分,请尝试使用推送通知。 Google 支持适用于 Android 的云到设备消息传递 (C2DM)。它允许向特定设备推送通知,而无需处理持久连接、电池和 CPU 使用等问题。

C2DM 方法归结为这一点。当客户端连接到您的服务器时,获取他的朋友列表和他们的“C2DM ID”并将 C2DM 推送到他们的设备。此推送被传递到您的应用程序,您可以通过触发通知或更新 UI 等方式对其进行响应。 (您的应用不一定要运行。推送通知通过特定的广播传递,您的应用可以注册接收器以使其唤醒。)

请注意,每个设备、每个应用的 C2DM 消息都有配额限制,每条消息的负载也有限制。所以你不应该通过这个发送大量文件。只是向您的应用发出通知,因此它可以调用您的服务器并获取更新的列表,而不是轮询。

您可以在此处获取有关 C2DM 和代码示例的更多信息。 https://developers.google.com/android/c2dm/

希望这会有所帮助。

【讨论】:

【参考方案2】:

你可能已经继续前进了,但我会为将来遇到这个问题的任何人发帖。

Firebase 是在这种情况下使用的一个很好的解决方案,如果应用程序始终在您希望发生通信时运行。(它不会像 C2DM/CDM 那样唤醒您的应用程序,除非您有一项服务一直在运行,并且在设备处于睡眠状态时仍不会唤醒...AFAIK)

它可能对某些场景有用,但可能不适用于聊天应用,因为您希望设备在消息到达时唤醒。

请注意,他们对免费订阅有限制。

【讨论】:

以上是关于Android : 通过 SERVER 获取在线或离线状态的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Smack 从 android 客户端获取 openfire 在线注册用户?

如何通过android java发送google pay“请求”,如amazon bhim pay在线支付

在 Android 中获取在线广播歌曲详细信息

android环境下的即时通讯

有没有办法从whatsapp获取在线状态到另一个android应用程序

通过位置或索引从Android中的HashMap获取键