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

时间:2017-11-01 11:30:11

标签: java android android-studio service

我正在制作Spinning wheel for prize,我可以在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
            }


        }
    });
}

我可以通过共享首选项实现它,但可以通过清除数据和缓存来清除共享首选项,这对我的应用程序不利,因为我想将它们存储在云端。

3 个答案:

答案 0 :(得分:0)

  

最简单的解决方案
  isTodayClickable = true / false

     

OnCreate()获取时间戳并设置clicable true / clicked和   单击日期在3次单击后保存在共享pref中启用它   如果有日期的共享pref,则将其保存在pref写入逻辑中   如果日期超过一天,请将其设置为true并保存   在pref

答案 1 :(得分:0)

  

但无法在另一天启用点击

您可以存储第一次点击的日期/时间,并在24小时后重置,或在午夜重置。 如您所知,不推荐,因为客户可以轻松绕过这些限制。

回到主要问题

  

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

1。为该客户端安装创建一个UUID: The Description in google's docs远不是好事。

2. 在服务器的数据库/表格中添加一个字段,以获取此UUID的点击次数。 UUID是您的主要密钥。每次点击后增加点击次数。要向服务器发送这么简单的请求,您实际上并不需要库,但AsyncHttpClient可以轻松实现。

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

3. 将第一次点击的日期/时间存储在您的服务器中。

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

答案 2 :(得分:0)

使用按钮点击次数在共享首选项中创建日期对象库。 在第二天创建新日期和地图与共享偏好存储日期。 如果匹配则禁用按钮否则启用。这是下面的例子。

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

快乐的编码!!