Firebase 连接检查 Android 中的在线离线状态

2023-12-23

如果用户关闭 wi-fi、3g、4g 等并反向(无互联网连接)。 Firebase 数据库名称子连接:(true/false) 因此,当互联网连接、wi-fi、3g、4g 等关闭或丢失时,用户就会处于离线状态,因此无法找到他。

记住两个场景:之前和之后。如果用户在其他用户搜索他之前离线,那么他不会显示在列表结果中,如果用户在其他用户搜索他之后离线,那么它将在该用户上显示“不再可用”图标

请有人帮助我解决这个问题。


为了解决这个问题,您可以在 Firebase 实时数据库中创建一个新节点来保存所有在线用户,这样当用户打开应用程序时,您将立即将其 ID 添加到这个新创建的节点中。然后,如果你想检查用户是否在线,只需检查他的 id 是否存在于列表中即可。

您还可以添加一个名为的新属性isOnline对于数据库中的每个用户,然后相应地更新它。

为此,我建议您使用 Firebase 的内置onDisconnect()方法。它使您能够预定义客户端断开连接后立即发生的操作。

See Firebase 文档 https://firebase.google.com/docs/database/android/offline-capabilities#section-presence.

您还可以检测用户的连接状态。对于许多与状态相关的功能,您的应用程序了解其何时在线或离线非常有用。 Firebase 实时数据库提供了一个特殊位置:/.info/connected每次 Firebase 实时数据库客户端的连接状态发生变化时都会更新。这是官方文档中的一个示例:

DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected");
    connectedRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            boolean connected = snapshot.getValue(Boolean.class);
            if (connected) {
                System.out.println("connected");
            } else {
                System.out.println("not connected");
            }
        }

        @Override
        public void onCancelled(DatabaseError error) {
            System.err.println("Listener was cancelled");
        }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firebase 连接检查 Android 中的在线离线状态 的相关文章

随机推荐

  • 通过 AJAX 加载内容后 jQuery 不起作用

    On 我有一个 jQuery 弹出窗口和可调整大小的缩略图 如果我将鼠标悬停在缩略图上 图像的大小就会完美调整 另外 当我单击页脚中的黄色大电视按钮 QuickBook TV 时 弹出窗口将完美地按照我的意愿显示 但是 当我单击 下一个 或
  • jQuery POST 请求实际上作为 GET 发送

    我正在尝试使用以下代码发送 POST 请求 ajax type post url http api com apiUsername apiBucket elements add dataType jsonp contentType appl
  • Autofac 依赖注入在调试中有效,但在发布中崩溃

    当我的 DI 在调试模式下正常时 什么会导致它在发布模式下崩溃 这是一个 Xamarin Forms 应用程序 正在 Android 上运行 07 23 20 56 53 002 I MonoDroid 15451 UNHANDLED EX
  • Python:使用linecache读取大文件与普通文件访问open()

    我所处的情况是 多个线程读取同一个大文件 并且多个文件指针指向同一个文件 该文件将至少有 100 万行 每行的长度从 500 个字符到 1500 个字符不等 不会对文件进行 写 操作 每个线程将从不同行开始读取同一文件 哪个是有效的方法 使
  • 为什么 Xdocument 给我一个 utf16 声明?

    我正在创建一个像这样的 XDocument XDocument doc new XDocument new XDeclaration 1 0 utf 8 yes 当我像这样保存文档时 doc Save c tijd file2 xml 我明
  • Scala method = Trait { ... } 含义

    我正在尝试同时学习 Scala 和 Play 框架 在我看来 Scala 有很多非常酷的想法 但我的挫败感之一是试图理解方法 函数 lambda 匿名函数等的所有不同语法 所以我的主应用程序控制器如下所示 object Applicatio
  • 如何将 MNIST 图像加载到 Pytorch DataLoader 中?

    用于数据加载和处理的 pytorch 教程非常特定于一个示例 有人可以帮助我了解更通用的简单图像加载的函数应该是什么样子吗 教程 http pytorch org tutorials beginner data loading tutori
  • 使用带有 ES6 生成器的 redux-saga 与带有 ES2017 async/await 的 redux-thunk 的优缺点

    现在有很多关于 redux 镇最新的孩子的讨论 redux saga redux saga https github com redux saga redux saga 它使用生成器函数来监听 调度操作 在我开始思考它之前 我想知道使用的优
  • html中可能有“继承”吗?

    假设我的所有 html 页面都有一个内容相同的顶栏和横幅 是否可以让页面从基本 html 页面继承内容 而不是在所有 html 页面上复制这些内容的代码 例如 base html可以有顶栏 横幅等 所有重复的内容 其余页面 index ht
  • 如何获取bash脚本中执行的命令的进程ID?

    我有一个脚本我想同时运行2个程序 一个是c程序 另一个是cpulimit 我想先用 在后台启动C程序 然后获取C程序的PID和将其交给 cpulimit 它也将通过 在后台运行 我尝试在下面执行此操作 它只是启动第一个程序 并且从不启动 c
  • 对存储在数据库中的字符串进行插值

    我们希望在数据库中维护从 ASP NET Web 应用程序发送的电子邮件 这个想法是将电子邮件的格式存储在数据库中 问题是电子邮件应包含订单特定信息 例如 感谢您的订单约翰 史密斯 您的订单1234已收到 我想要实现的是 我在数据库列值中使
  • iOS 应用程序中全局常量存储在哪里?

    我的 iOS 应用程序中的大多数模型都会查询 Web 服务器 我想要一个存储服务器基本 URL 的配置文件 它看起来像这样 production static NSString const baseUrl http website exam
  • 为什么 ResizeObserver 构造函数回调接受条目数组而不是单个条目?

    考虑到ResizeObserver 构造函数 https developer mozilla org en US docs Web API ResizeObserver ResizeObserver 其第一个参数是一个回调 它接受两个参数
  • 如何将MYSQL中的Blob数据转换为Android ImageView

    Android 3 1 API 12 严格来说 这是一个商业应用程序 不会出现在任何其他设备上 我 n00b 正在尝试检索在我们服务器上的 Mysql 中存储为 Blob 的图像数组 并将它们添加到ImageView在 Android 中
  • 在 Django 应用程序中提供静态网页的最佳方式是什么?

    我正在构建一个相对简单的Django http en wikipedia org wiki Django 28web framework 29应用程序 除了应用程序的大部分动态部分所在的主页之外 我还需要一些根本不是动态的页面 About
  • Spring 注释验证 - 检查更新与添加时的唯一性

    我有一个名为 sport 的 POJO 其属性有 sportID sportName 玩家数量 使用带注释的验证 我编写了自己的注释约束来检查数据库中是否已存在 sportName 当尝试添加 sportName 时它效果很好 但是如果我尝
  • VS Code“在终端中运行 Python”播放按钮不起作用

    现在我知道这个问题之前已经被问过 没有找到Python 不带参数运行以从 Microsoft Store 安装 或从 设置 禁用此快捷方式 https stackoverflow com questions 65348890 python
  • Jquery检查图像是否已加载[重复]

    这个问题在这里已经有答案了 可能的重复 图像加载时的 jQuery 回调 即使图像已缓存 https stackoverflow com questions 3877027 jquery callback on image load eve
  • Android PPM编码器音频库

    我需要在 Android 上实现音频 PPM 脉冲位置调制 参考 http en wikipedia org wiki Pulse position modulation http en wikipedia org wiki Pulse p
  • Firebase 连接检查 Android 中的在线离线状态

    如果用户关闭 wi fi 3g 4g 等并反向 无互联网连接 Firebase 数据库名称子连接 true false 因此 当互联网连接 wi fi 3g 4g 等关闭或丢失时 用户就会处于离线状态 因此无法找到他 记住两个场景 之前和之