我在我的应用中设置了奖励广告系统。在每次按下我的奖励按钮时,奖励广告显示。但我希望每小时限制一次。
这是我的按钮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);
}
答案 0 :(得分:2)
您可以检查他们上次点击的时间,并确保在调用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();
}
}
});
}