我正在为奖品制作纺车,我可以在点击3次后禁用点击事件,但无法在另一天启用点击,我只想让用户每天只点击3次,禁用当天的点击事件,只在第二天启用
public class MainActivity extends AppCompatActivity implements SpinningWheelView.OnRotationListener<String> {
private SpinningWheelView wheelView;
private TextView rotate,spinCount,spinPoint;
int COUNT=0;
int points=0;
private SharedPreferences mPrefs;
private SharedPreferences.Editor editor;
private String sharedPref="MY_PREF";
int count= 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPrefs=getSharedPreferences(sharedPref,Context.MODE_PRIVATE);
mPrefs.getInt("count",0);
editor=mPrefs.edit();
wheelView = (SpinningWheelView) findViewById(R.id.wheel);
rotate = (TextView) findViewById(R.id.rotate);
spinCount=(TextView)findViewById(R.id.spin_count);
spinPoint=(TextView)findViewById(R.id.spin_point);
wheelView.setItems(R.array.dummy);
wheelView.setOnRotationListener(this);
rotate.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onClick(View v) {
int i = mPrefs.getInt("count",0);
if (i<3){
count++;
editor.putInt("count",count);
editor.apply();
wheelView.rotate(80, 3000, 50);
}else {
rotate.setEnabled(false);
//how can it be enabled on another day
}
}
});
}
我可以通过共享首选项实现,但共享首选项可以通过清除数据和缓存来清除,这对我的应用程序不好,因为我想将它们的点存储在云上。
最简单的解决方案
isTodayClickable=true/falseOnCreate()获取时间戳并将clicable设置为true/点击并点击日期两者都保存在共享pref后3点击启用它false如果存在共享的日期pref,则将其保存在pref写入逻辑中检查日期是否超过一天,然后将其设置为true并保存预处理
但无法在另一天启用点击
您可以存储第一次单击的日期/时间,并在24小时后重置,或在午夜重置。正如您所知,这是不推荐的,因为客户端可以轻松绕过这些限制。
回到主要问题
如何限制点击事件每天仅3次
1.为该客户端安装创建UUID:谷歌文档中的描述远远超出了好的范围。
2.在服务器的数据库/表中添加一个字段,用于此UUID的单击。UUID是您的主要密钥。每次点击后增加点击量字段。对于向服务器发送如此简单的请求,您实际上并不需要库,但AsyncHttpClient使其变得简单。
如果互联网不可用,请告诉你的用户。不要继续离线,因为他们很容易作弊。
3.将第一次单击的日期/时间存储在服务器中。
4.在SQL数据库中创建一个简单的存储过程,将日期重置为00:00。
通过点击按钮的次数在共享首选项中创建日期对象存储。在第二天创建新的日期和地图与共享的首选项存储的日期。如果匹配,则禁用按钮else启用。下面是一个例子。
button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int clicks = 0;
clicks++;
if (clicks >3){
button.setEnabled(false);
}
SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", this.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("clicks", clicks);
editor.putString("date",date.toString());
editor.apply();
}
});
编码快乐!!