将奖励按钮按下限制为每小时一次

limit reward button press to once an hour

我在我的应用程序中设置了奖励广告系统。目前,每次我按下奖励按钮时,都会显示奖励广告。但我想将此限制为每小时单击一次。

这是我的按钮 onclick,它位于我的广告加载方法中。我这样做是因为在某些互联网连接速度较慢的设备上,在人们按下按钮之前广告没有加载。

 @Override
        public void onRewardedVideoAdLoaded() {
            Toast.makeText(Competition.this, "Advert loaded please click the Reward button to continue", Toast.LENGTH_LONG).show();
            btn1 = (Button) findViewById(R.id.btncomp_ok);
            btn1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    showRewardedVideo();
                }
            });

        }

我还有一个连接到我的应用程序的 Firebase 数据库。这会计算广告被观看到最后的次数。

 ref.child("Reward").child(Userid).child("screenname").setValue(Username);
    ref.child("Reward").child(Userid).child("watched").runTransaction(new Transaction.Handler() {
        @Override
        public Transaction.Result doTransaction(MutableData mutableData) {

            if (mutableData.getValue() == null) {
                mutableData.setValue(1);
            } else {
                int count = mutableData.getValue(Integer.class);
                mutableData.setValue(count + 1);
            }
            ;

            return Transaction.success(mutableData);


        }

您可以检查他们最后一次点击的时间,并确保在调用 showRecordedVideo() 之前已经过了一个小时。 lastClickTime 可以存储在 db 或 sharedpreferences 中。

@Override
public void onRewardedVideoAdLoaded() {
    static int ONEHOUR = 60 * 60 * 1000;
    Toast.makeText(Competition.this, "Advert loaded please click the Reward button to continue", Toast.LENGTH_LONG).show();
    btn1 = (Button) findViewById(R.id.btncomp_ok);
    btn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (System.currentTimeMillis() >= lastClickTime + ONEHOUR) {
                showRewardedVideo();
            }
        }
    });
}