【问题标题】:How do I reset Firebase Realtime Database values offline?如何离线重置 Firebase 实时数据库值?
【发布时间】:2021-03-30 21:41:35
【问题描述】:

在我的 Firebase 实时数据库中,我想在每天晚上 11: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
)

这是我在DailyBroadcastReceiver 中的onReceive 函数中用于重置值的内容:

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

到目前为止,如果用户正在使用应用程序,或者如果用户的手机处于开机状态并且他们仍然连接到互联网,尽管他们没有使用应用程序本身。

如果用户未连接到互联网或即使他们的设备未打开,我如何让我的应用重置 Firebase 实时数据库中的特定值?

【问题讨论】:

    标签: android firebase firebase-realtime-database android-alarms


    【解决方案1】:

    由于您提到的原因,不可能可靠地使用用户的移动设备来安排工作。事实上,设备可能已关闭,或者没有互联网连接,或者用户甚至可能正在使用多个设备,每个设备在这项夜间工作中相互冲突。

    您应该改为在您控制的后端上进行工作。使用scheduled functions 定期安排和执行一些代码相对容易,因此您应该考虑改用它。

    另见:

    【讨论】:

      猜你喜欢
      • 2018-12-29
      • 2019-05-13
      • 2020-05-31
      • 2017-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 2020-01-07
      相关资源
      最近更新 更多