如何离线重置 Firebase 实时数据库值?
How do I reset Firebase Realtime Database values offline?
在我的 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)
}
到目前为止,如果用户正在使用该应用程序,或者如果用户的 phone 已打开并且他们仍然连接到互联网,尽管他们不在该应用程序本身上,但此方法有效。
如果用户未连接到互联网或即使他们的设备未开机,我如何让我的应用重置我的 Firebase 实时数据库中的特定值?
由于您提到的原因,无法可靠地使用用户的移动设备来安排工作。事实上,该设备可能已关闭,或者它可能没有互联网连接,或者用户甚至可能使用多个设备,每个设备在夜间工作时相互冲突。
您应该改为在您控制的后端上完成工作。使用 scheduled functions 定期安排和执行一些代码相对容易,因此您应该考虑改用它。
另请参阅:
在我的 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)
}
到目前为止,如果用户正在使用该应用程序,或者如果用户的 phone 已打开并且他们仍然连接到互联网,尽管他们不在该应用程序本身上,但此方法有效。
如果用户未连接到互联网或即使他们的设备未开机,我如何让我的应用重置我的 Firebase 实时数据库中的特定值?
由于您提到的原因,无法可靠地使用用户的移动设备来安排工作。事实上,该设备可能已关闭,或者它可能没有互联网连接,或者用户甚至可能使用多个设备,每个设备在夜间工作时相互冲突。
您应该改为在您控制的后端上完成工作。使用 scheduled functions 定期安排和执行一些代码相对容易,因此您应该考虑改用它。
另请参阅: