Skip to content

Commit 4d37f27

Browse files
committed
Add notification cancellation methods to background thread
1 parent fccf403 commit 4d37f27

File tree

2 files changed

+22
-20
lines changed

2 files changed

+22
-20
lines changed

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,26 @@ public void enqueueTask(Runnable task) {
1616
mTasks.add(task);
1717
}
1818

19+
public void enqueueCancelNotification(int id) {
20+
mTasks.add(() -> {
21+
UnityNotificationManager.cancelPendingNotificationIntent(UnityNotificationManager.mUnityNotificationManager.mContext, id);
22+
});
23+
}
24+
25+
public void enqueueCancelAllNotifications() {
26+
mTasks.add(() -> {
27+
Context context = UnityNotificationManager.mUnityNotificationManager.mContext;
28+
Set<String> ids = UnityNotificationManager.getScheduledNotificationIDs(context);
29+
30+
if (ids.size() > 0) {
31+
for (String id : ids) {
32+
UnityNotificationManager.cancelPendingNotificationIntent(context, Integer.valueOf(id));
33+
UnityNotificationManager.deleteExpiredNotificationIntent(context, id);
34+
}
35+
}
36+
});
37+
}
38+
1939
public void enqueueHousekeeping() {
2040
mTasks.add(() -> { performHousekeeping(); });
2141
}

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

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -571,22 +571,7 @@ public boolean checkIfPendingNotificationIsRegistered(int id) {
571571

572572
// Cancel all the pending notifications.
573573
public void cancelAllPendingNotificationIntents() {
574-
Set<String> ids;
575-
synchronized (UnityNotificationManager.class) {
576-
ids = this.getScheduledNotificationIDs(mContext);
577-
saveScheduledNotificationIDs(mContext, new HashSet<>());
578-
}
579-
580-
if (ids.size() > 0) {
581-
Context context = mContext;
582-
mBackgroundThread.enqueueTask(() -> {
583-
for (String id : ids) {
584-
cancelPendingNotificationIntent(context, Integer.valueOf(id));
585-
deleteExpiredNotificationIntent(context, id);
586-
}
587-
triggerHousekeeping();
588-
});
589-
}
574+
mBackgroundThread.enqueueCancelAllNotifications();
590575
}
591576

592577
protected static synchronized Set<String> getScheduledNotificationIDs(Context context) {
@@ -603,10 +588,7 @@ private static synchronized void saveScheduledNotificationIDs(Context context, S
603588

604589
// Cancel a pending notification by id.
605590
public void cancelPendingNotification(int id) {
606-
synchronized (UnityNotificationManager.class) {
607-
UnityNotificationManager.cancelPendingNotificationIntent(mContext, id);
608-
triggerHousekeeping();
609-
}
591+
mBackgroundThread.enqueueCancelNotification(id);
610592
}
611593

612594
// Cancel a pending notification by id.

0 commit comments

Comments
 (0)