Как сбросить значения базы данных Firebase Realtime в автономном режиме?

В моей базе данных Firebase Realtime я хочу каждый день сбрасывать определенное значение в 23:59.

Это код, который у меня есть в моем MainActivity:

val dailyCal: Calendar = Calendar.getInstance()
dailyCal[Calendar.HOUR_OF_DAY] = 23
dailyCal[Calendar.MINUTE] = 59
dailyCal[Calendar.SECOND] = 59
dailyCal[Calendar.MILLISECOND] = 0
val dailyIntent: PendingIntent = PendingIntent.getBroadcast(
    this@MainActivity,
    0,
    Intent(this, DailyBroadcastReceiver::class.java),
    PendingIntent.FLAG_UPDATE_CURRENT
)
val dailyAm: AlarmManager = this.getSystemService(ALARM_SERVICE) as AlarmManager
dailyAm.setInexactRepeating(
    AlarmManager.RTC,
    dailyCal.timeInMillis,
    AlarmManager.INTERVAL_DAY,
    dailyIntent
)

Это то, что у меня есть в моей функции onReceive в моем DailyBroadcastReceiver для сброса значения:

if (intent.action != Intent.ACTION_BOOT_COMPLETED) {
    val userInfo = database.getReference("users").child(auth.currentUser!!.uid).child("daily")
    userInfo.setValue(0)
}

Пока это работает, если пользователь находится в приложении или если телефон пользователя включен, и он все еще подключен к Интернету, несмотря на то, что не находится в самом приложении.

Как мне заставить мое приложение сбросить определенное значение в моей базе данных Firebase Realtime, если пользователь не подключен к Интернету или даже если его устройство не включено?

0
0
255
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Невозможно надежно использовать мобильное устройство пользователя для планирования работы по указанной вами причине. На самом деле устройство может быть выключено, или у него может отсутствовать подключение к Интернету, или пользователь может даже использовать несколько устройств, каждое из которых конфликтует друг с другом для этой ночной работы.

Вместо этого вы должны выполнять работу на бэкэнде, который вы контролируете. Относительно легко запланировать и выполнять некоторый код на периодической основе, используя запланированные функции, поэтому вам следует рассмотреть возможность их использования.

Смотрите также:

Другие вопросы по теме