【问题标题】:Implement visitor count with Firebase Database使用 Firebase 数据库实现访问者计数
【发布时间】:2021-06-15 10:11:13
【问题描述】:

尝试实现一个基本的访客计数器,只要用户点击帖子,该计数器就会增加。我的方法正确地做到了这一点,但问题是每当同一个用户点击时计数器就会增加,所以它应该只发生一次。我试图用布尔值来处理这个问题,但没有奏效。有人可以帮忙吗?

我的代码的对应部分。


private void incredmentCount(){
        boolean isCounting = true;
        if (isCounting){
            FirebaseDatabase database = FirebaseDatabase.getInstance();
            DatabaseReference myRef = database.getReference("posts").child(postId);

            HashMap<String, Object> hashMap = new HashMap<>();

            hashMap.put("counter", counter++);
            myRef.updateChildren(hashMap);
            //stop counting as soon as database updates.
            isCounting = false;
        }
        

    }

【问题讨论】:

  • “我已尝试使用布尔值来处理此问题,但没有奏效”您能否编辑您的问题以显示您对这些布尔值的尝试?
  • @FrankvanPuffelen 完成。可能有什么问题?
  • 您的代码中的布尔值isCounting 有什么问题?
  • @FrankvanPuffelen 布尔 isCounting 应该阻止用户一遍又一遍地增加计数器。它应该只增加一次。

标签: firebase-realtime-database counter


【解决方案1】:

由于isCounting 是一个局部变量,因此每次调用incredmentCount 时它都会被初始化为boolean isCounting = true;

如果您想在调用之间保留该值,则需要将变量移出incredmentCount,例如将其设为类中的字段。

如果您希望它在程序运行期间保持保存,您可以将其存储在shared preferences

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 2019-02-16
    • 2021-04-13
    • 2019-02-26
    • 2020-08-13
    • 1970-01-01
    • 2021-06-14
    相关资源
    最近更新 更多