gpt4 book ai didi

firebase - Firestore(Firebase)如何计算活跃/在线用户总数

转载 作者:行者123 更新时间:2023-12-01 12:12:44 24 4
gpt4 key购买 nike

我将创建一个具有以下某些功能的应用:

  • 无需注册或登录即可使用该应用

  • 每天,我的管理员都会向后端上传一个 10 分钟长(或更短)的音频文件,并设置音频可供所有用户使用的时间。例如:上午 10 点

  • 设置时间(上午 9 点 55 分)前 5 分钟,应用程序将开始统计打开应用程序并等待播放音频文件的用户总数。

  • 活跃/在线用户数将是实时的

我尝试过的:

  • 每次用户打开音频屏幕时,应用程序都会使用 FirebaseAuth 以匿名身份登录。当用户离开此屏幕时,使用 FirebaseAuth 进行注销。但是这种方法不起作用,因为当用户注销时,匿名用户仍然存在于用户表中

我的问题:

  1. 有了这些功能,我可以用firebase/firestore来实现吗?

  2. 统计活跃用户总数的最佳方法是什么?

最佳答案

您可以使用 FirebaseAuth 将一个值写入数据库,如果 auth 返回有人正在使用该应用程序,则写入一个引用并继续在其上添加用户。

我的意思是,如果有一个用户在线,FirebaseAuth 将写入一个名为 usersonline 的引用,值为 1 ,如果另一个用户加入,它将是 usersonline + 1 等等,然后你可以附加一个 onChildEventListener 并使用 onChildChanged 实时更新在线用户,所以,每次 child 改变(根据用户增加)它将在线显示用户。

要减少在线用户,在他们注销并且 AuthListener 不再看到登录用户时,您可以在每次用户注销时减 1,因此,如果用户登录out,AuthListener 将触发,每次发生这种情况时,您都可以使用 usersonline - 1 修改您的 child 。

例如,当用户失去连接时,Firebase 设法将数据写入数据库。

// Write a string when this client loses connection
presenceRef.onDisconnect().setValue("I disconnected!");

您可以在离线功能中查看:

https://firebase.google.com/docs/database/android/offline-capabilities

因此,与其编写(“我已断开连接!”),您想要实现的是将 usersonline ref 减 1 ,因此您将像实时在线用户一样添加人员并从该 child 中删除他们。

该文档中的这个片段非常适合实现您正在寻找的内容

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"); // tell your usersonline ref to increment by 1
} else {
System.out.println("not connected"); //then if the user is not longer connected just decrement your usersonline by 1
}
}

@Override
public void onCancelled(DatabaseError error) {
System.err.println("Listener was cancelled");
}
});

就同时连接而言,这是针对 Firebase 实时数据库的:

The Spark plan limit is 100 and cannot be raised. The Flame and Blaze plans have a limit of 100,000 simultaneous connections per database. If you need more than 100,000 simultaneous connections, contact Firebase support.

https://firebase.google.com/docs/firestore/quotas对于 Firestore,100k 是目前同时连接的限制,这只是针对测试阶段

关于firebase - Firestore(Firebase)如何计算活跃/在线用户总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50558974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com