android - 从服务器检查设备可用性的最佳方法是什么

标签 android firebase push-notification google-cloud-messaging

我正在开发一个聊天应用程序,例如Telegram。用户应该看到他/她的 friend 在线状态(在线/离线)。我搜索了很多,发现服务器必须向设备发送ping,然后设备回复。但我认为它会阻止应用程序以最佳方式使用服务器和设备资源。您假设有 100 万用户,每个时间间隔都有大量 ping,大量设备电池和带宽使用等等。

我还研究了 Firebase 和 GCM。他们检查设备可用性以向他们发送消息,但我无法使用它向用户显示。

我对 Telegram 用于提高用户可用性的技术非常感兴趣。

请让我找到一个最佳的方法。 谢谢

最佳答案

如果你看the blog post @Andre linked到,您会发现解决此问题的“官方”Firebase 方法是在 Firebase 的实时数据库中存储一个指示用户状态的值。所以,逻辑是这样的:

  • 使用数据库中的属性来跟踪用户的状态(例如/users/{uid}/status)
  • 当用户登录时,您将其状态设置为“在线”
  • 当用户注销/将应用程序置于后台/空闲时,您可以更改“状态”属性的值(例如,更改为“离线”(使用博客文章中所示的 .onDisconnect() 方法)。

现在,每当您获取该状态的值时,它总是会反射(reflect)用户的在线/离线状态,而不依赖于用户当时实际在线状态。

如果您想向用户显示他们所有 friend 的状态,您只需循环遍历他们 friend 的 uid 列表并获取每个 friend 的相关状态。所有信息/代码似乎都是 in that blog post .

关于android - 从服务器检查设备可用性的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38700118/

相关文章:

android - 调试适配器 : SyntaxError: Unexpected token L in JSON at position 0 中未处理的错误

android - Eclipse Android SDK 内容辅助性能缓慢

firebase - flutter firebase 谷歌注销不工作

android - 推送服务器如何知道将通知发送到哪里

android - 从 Android 发布到 goo.gl

java - ImageView 上的 setBackgroundResource 返回 null

javascript - firebase证书对象必须包含字符串 "private_key"属性

swift - 如何使用 swift 检查 Firebase DB 节点值是否为真?

iOS -Urbanairship 生产推送通知无法正常工作

ios - 当应用程序被用户杀死时,WhatsApp 如何处理 iOS 上的静默推送通知?