Java 如何限制单击事件每天仅3次,然后禁用它并在第二天启用单击?

Java 如何限制单击事件每天仅3次,然后禁用它并在第二天启用单击?,java,android,android-studio,service,Java,Android,Android Studio,Service,我正在为奖品制作旋转木马,我可以在3次点击后禁用点击事件,但无法在另一天启用点击,我只想让用户每天只点击3次,并在当天禁用点击事件,只在第二天启用 public class MainActivity extends AppCompatActivity implements SpinningWheelView.OnRotationListener<String> { private SpinningWheelView wheelView; private TextView rota

我正在为奖品制作旋转木马,我可以在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=真/假

OnCreate获取时间戳并将clicable设置为true/单击并 单击“日期”和“保存在共享首选项中”3次后单击“启用” 如果存在日期的共享pref,则将其保存在pref write logic中为false 检查日期是否超过一天,然后将其设置为true并保存 优先

但无法在另一天启用单击

您可以存储首次单击的日期/时间,并在24小时后重置,或在午夜重置。 正如您所知,不建议这样做,因为客户端可以轻松绕过这些限制

回到主要问题

如何限制点击事件每天仅3次

一,。为该客户端安装创建UUID: 这远远不够好

二,。在服务器的数据库/表中为此UUID的单击添加一个字段。UUID是您的主键。每次单击后增加单击字段。要将如此简单的请求发送到服务器,您实际上不需要库,但这样做很简单

如果internet不可用,请告诉您的用户。不要继续离线,因为他们很容易作弊

三,。在服务器中存储第一次单击的日期/时间


四,。在SQL数据库中创建一个简单的存储过程,将日期重置为00:00。

在共享首选项中创建日期对象存储,并单击按钮数。 在第二天创建新的日期,并使用共享首选项存储日期映射。 如果匹配,则禁用按钮,否则启用。下面是一个例子

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();
}
});

快乐编码

您可能必须部署一个后端服务器来存储每个用户的数据…谢谢您,先生,但我必须使用服务,因为通过清除缓存可以清除共享首选项,所以用户很容易作弊。。