在Web的Flutter中实现访客计数器

我正在尝试在完全由visitor-counter构建的网站上实现flutter-web,并且我尝试使用简单的dart代码和来自pub.dev的某些程序包来实现此目的。

但是困扰我的问题是,我需要找到一种方法来根据用户的浏览器或设备来唯一标识用户,这样我就不会最终在同一个人上一次又一次地增加计数器重新访问。

到目前为止,我一直认为我可以使用firestore跟踪访问者的总数,并在启动时在网页上显示相同的数字,并使用诸如dcachelocalstorage(如所述的here)来跟踪正在重新访问同一网页的用户。

有没有更好的方法来解决这个问题?任何帮助将不胜感激?

(ps:我之前没有网络开发经验)

erma001 回答:在Web的Flutter中实现访客计数器

自从您谈论用户以来,我立即想到使用Firebase身份验证。

您可以通过两种方式使用它:

  1. 使用匿名身份验证,您可以为每个用户创建唯一的ID,而无需他们输入凭据。

  2. 如果您希望能够在不同的浏览器/设备上标识同一用户,则他们必须使用受支持的提供商之一(电子邮件/密码,电话号码,电子邮件链接,facebook,google,等)。

无论您选择哪一个,每个用户现在都将具有唯一的ID(在Firebase中称为UID),您可以使用该ID在数据库中进行标识。例如,您可以为数据库中的每个用户创建一个文档,并将其UID作为该文档的ID。这样,您可以确保每个用户最多只能有一个文档。

您仍然需要计算文档数量,我建议您检查distributed counter extension


还要考虑是否要在这里使用Firebase Realtime Database而不是Firestore,因为它可以为您提供更简单的定价模型,并且具有内置的presence system。您仍将像以前一样使用Firebase身份验证,但只需交换数据库即可。

,

如果您只想捕获 Web 应用程序上的访问者数量,则有一个简短的方法。 我在 firestore 中创建了一个名为“Visits”的集合,并在其中添加了一个名为“count”的字段并生成了自动 ID。而已! 现在你只需要在你的第一个屏幕的 init 方法中调用这个方法:

updateCounter() async {
final cRef = FirebaseFirestore.instance.collection('VISITS');
await cRef
    .doc("mS9fCXjvkpREt8LvanSb") //Paste the id which was generated automatically
    .set({"count": FieldValue.increment(1)},SetOptions(merge: true));

}

本文链接:https://www.f2er.com/3094313.html

大家都在问