簡體   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