繁体   English   中英

如何在应用程序中仅在特定时间段内启用某些功能?

[英]How to enable certain functions only for a specific period of time in apps?

我正在使用预订应用程序,该应用程序在一天中有不同的时间段(例如11:30,12:30),用户可以在其中预订他们的行程。但是我不希望预订选项打开一整天,它应该只从某个时间开放到第二天。我听说这可以通过云功能来完成,如果可以的话,有人可以告诉我吗?

这是我的BookingActivity.java

public class BookingActivity extends AppCompatActivity {

private DatabaseReference mUser;
private DatabaseReference mTime1;
private DatabaseReference mTime2;
private DatabaseReference mCount1;
private DatabaseReference mCount2;
private FirebaseAuth mAuth;
private static final String TAG = "BookingActivity";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_booking);

mAuth = FirebaseAuth.getInstance();

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FirebaseUser fu = mAuth.getCurrentUser();
final User newUser = new User(fu);

mUser = FirebaseDatabase.getInstance().getReference().child("Users");
mTime1 = FirebaseDatabase.getInstance().getReference().child("3:30");
mTime2 = FirebaseDatabase.getInstance().getReference().child("5:30");
mCount1 = FirebaseDatabase.getInstance().getReference().child("Count@3:30");
mCount2 = FirebaseDatabase.getInstance().getReference().child("Count@5:30");

findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Update(mTime1,mCount1,newUser);

    }
});

findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Update(mTime2,mCount2,newUser);
    }
});

}


public void Book(DatabaseReference mDatabase,User user) {

Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();

HashMap<String,String>datamap = new HashMap<>();

if(user!=null) {
    datamap.put("Name", user.getUserName());
    datamap.put("Email", user.getUserEmail());
    datamap.put("timestamp",ts);
    datamap.put("Limit", user.setRating("1"));
}

 mDatabase.push().setValue(datamap);

}

public void Update(final DatabaseReference mDatabase, DatabaseReference mref,final User user) {

    mref.runTransaction(new Transaction.Handler() {
    @NonNull
    @Override
    public Transaction.Result doTransaction(@NonNull MutableData mutableData) {

        Integer CurrentValue = mutableData.getValue(Integer.class);
        if(CurrentValue==null) {
            return Transaction.success(mutableData);
        }
        else if(CurrentValue<5 && user.getRating().equals("0")){
            mutableData.setValue(CurrentValue + 1);
            Book(mDatabase,user);
            runOnUiThread(new Runnable() {
                public void run() {
                    final Toast toast = Toast.makeText(BookingActivity.this,"Booked Successfully",Toast.LENGTH_SHORT);
                    toast.show();
                }
            });
         }
         else{
            runOnUiThread(new Runnable() {
                public void run() {
                    final Toast toast = Toast.makeText(BookingActivity.this,"Maximum Limit Reached",Toast.LENGTH_SHORT);
                    toast.show();
                }
            });
        }
        return Transaction.success(mutableData);

    }

    @Override
    public void onComplete(@Nullable DatabaseError databaseError, boolean b, @Nullable DataSnapshot dataSnapshot) {

        Log.d(TAG, "Updating likes count transaction is completed");

    }
});
}




@Override
public boolean onCreateOptionsMenu(Menu menu) {

MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);

return true;
}

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {
    case R.id.menuLogout:

        FirebaseAuth.getInstance().signOut();
        finish();
        startActivity(new Intent(this, MainActivity.class));

        break;
}

return true;
}

我的数据库结构如下所示 在此处输入图片说明

您可以检查时间并在活动开始时基于该时间启用/禁用预订按钮。 在预订活动中放入类似的支票,这样他们就不能直接启动它。

这种功能在Google Cloud Functions中不存在。 您可能指的是schedule [1],但这用于触发对函数的调用。

您可以做的就是将该业务逻辑实现到函数本身中,使其始终可以在HTTP级别上使用,但只能在某些时间实际预订某些东西(使用“ new Date();”获取当前时间)。

干杯,

米格尔

[1] https://medium.com/google-cloud/google-cloud-functions-scheduling-cron-5657c2ae5212

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM