+ Fix Android rescheduled notifications firing immediately

This commit is contained in:
Liam Heneghan 2018-04-30 14:48:13 +12:00
parent 8ef7c2d983
commit d193c6b688
1 changed files with 15 additions and 1 deletions

View File

@ -657,7 +657,21 @@ public class RNFirebaseNotificationManager {
String notificationId = notification.getString("notificationId"); String notificationId = notification.getString("notificationId");
Bundle schedule = notification.getBundle("schedule"); Bundle schedule = notification.getBundle("schedule");
Double fireDate = schedule.getDouble("fireDate"); // fireDate is stored in the Bundle as Long after notifications are rescheduled.
// This would lead to a fireDate of 0.0 when trying to extract a Double from the bundle.
// Instead always try extract a Long
Long fireDate = schedule.getLong("fireDate", -1);
if (fireDate == -1) {
fireDate = (long) schedule.getDouble("fireDate", -1);
if (fireDate == -1) {
if (promise == null) {
Log.e(TAG, "Missing schedule information");
} else {
promise.reject("notification/schedule_notification_error", "Missing fireDate information");
}
return;
}
}
// Scheduled alarms are cleared on restart // Scheduled alarms are cleared on restart
// We store them so that they can be re-scheduled when the phone restarts in RNFirebaseNotificationsRebootReceiver // We store them so that they can be re-scheduled when the phone restarts in RNFirebaseNotificationsRebootReceiver