Skip to content

Commit b02786d

Browse files
committed
Fix rescheduling after reboot
1 parent 5c10538 commit b02786d

File tree

1 file changed

+27
-9
lines changed

1 file changed

+27
-9
lines changed

com.unity.mobile.notifications/Runtime/Android/Plugins/com/unity/androidnotifications/UnityNotificationManager.java

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -287,27 +287,37 @@ public void scheduleNotification(Notification.Builder notificationBuilder) {
287287
}
288288

289289
Notification scheduleAlarmWithNotification(Notification.Builder notificationBuilder, Intent intent, long fireTime) {
290+
return scheduleAlarmWithNotification(mContext, mOpenActivity, notificationBuilder, intent, fireTime);
291+
}
292+
293+
static Notification scheduleAlarmWithNotification(Context context, Class activityClass, Notification.Builder notificationBuilder, Intent intent, long fireTime) {
290294
Bundle extras = notificationBuilder.getExtras();
291295
int id = extras.getInt(KEY_ID, -1);
292296
long repeatInterval = extras.getLong(KEY_REPEAT_INTERVAL, -1);
293297
// fireTime not taken from notification, because we may have adjusted it
294298

295-
Notification notification = buildNotificationForSending(mContext, mOpenActivity, notificationBuilder);
299+
Notification notification = buildNotificationForSending(context, activityClass, notificationBuilder);
296300
mScheduledNotifications.put(Integer.valueOf(id), notification);
297301
intent.putExtra(KEY_NOTIFICATION_ID, id);
298302

299-
PendingIntent broadcast = getBroadcastPendingIntent(mContext, id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
300-
UnityNotificationManager.scheduleNotificationIntentAlarm(mContext, repeatInterval, fireTime, broadcast);
303+
PendingIntent broadcast = getBroadcastPendingIntent(context, id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
304+
UnityNotificationManager.scheduleNotificationIntentAlarm(context, repeatInterval, fireTime, broadcast);
301305
return notification;
302306
}
303307

304308
static void scheduleAlarmWithNotification(Notification.Builder notificationBuilder, Context context) {
305-
if (mUnityNotificationManager == null)
306-
return;
307-
308309
long fireTime = notificationBuilder.getExtras().getLong(KEY_FIRE_TIME, 0L);
309310
Intent intent = buildNotificationIntent(context);
310-
mUnityNotificationManager.scheduleAlarmWithNotification(notificationBuilder, intent, fireTime);
311+
312+
Class openActivity;
313+
if (mUnityNotificationManager == null || mUnityNotificationManager.mOpenActivity == null) {
314+
openActivity = UnityNotificationUtilities.getOpenAppActivity(context, true);
315+
}
316+
else {
317+
openActivity = mUnityNotificationManager.mOpenActivity;
318+
}
319+
320+
scheduleAlarmWithNotification(context, openActivity, notificationBuilder, intent, fireTime);
311321
}
312322

313323
protected static Notification buildNotificationForSending(Context context, Class openActivity, Notification.Builder builder) {
@@ -637,13 +647,21 @@ public void onReceive(Context context, Intent intent) {
637647
} else {
638648
Notification.Builder builder = (Notification.Builder)notification;
639649
// this is different instance and does not have mOpenActivity
640-
if (builder == null || mUnityNotificationManager == null || mUnityNotificationManager.mOpenActivity == null) {
650+
if (builder == null) {
641651
Log.e(TAG_UNITY, "Failed to recover builder, can't send notification");
642652
return;
643653
}
644654

655+
Class openActivity;
656+
if (mUnityNotificationManager == null || mUnityNotificationManager.mOpenActivity == null) {
657+
openActivity = UnityNotificationUtilities.getOpenAppActivity(context, true);
658+
}
659+
else {
660+
openActivity = mUnityNotificationManager.mOpenActivity;
661+
}
662+
645663
id = builder.getExtras().getInt(KEY_NOTIFICATION_ID, -1);
646-
notif = buildNotificationForSending(context, mUnityNotificationManager.mOpenActivity, builder);
664+
notif = buildNotificationForSending(context, openActivity, builder);
647665
// if notification is not sendable, it wasn't cached
648666
mScheduledNotifications.put(Integer.valueOf(id), notif);
649667
}

0 commit comments

Comments
 (0)