diff --git a/native/android/app/src/main/java/app/comm/android/notifications/CommAndroidNotifications.java b/native/android/app/src/main/java/app/comm/android/notifications/CommAndroidNotifications.java --- a/native/android/app/src/main/java/app/comm/android/notifications/CommAndroidNotifications.java +++ b/native/android/app/src/main/java/app/comm/android/notifications/CommAndroidNotifications.java @@ -15,6 +15,7 @@ import com.google.firebase.messaging.RemoteMessage; import java.util.HashMap; import java.util.Map; +import me.leolin.shortcutbadger.ShortcutBadger; public class CommAndroidNotifications extends ReactContextBaseJavaModule { private NotificationManager notificationManager; @@ -86,6 +87,15 @@ notificationManager.createNotificationChannel(channel); } + @ReactMethod + public void setBadge(int count) { + if (count == 0) { + ShortcutBadger.removeCount(this.getReactApplicationContext()); + } else { + ShortcutBadger.applyCount(this.getReactApplicationContext(), count); + } + } + @Override public Map getConstants() { final Map constants = new HashMap<>(); diff --git a/native/push/android.js b/native/push/android.js --- a/native/push/android.js +++ b/native/push/android.js @@ -14,6 +14,7 @@ description: ?string, ) => void, +getConstants: () => { +NOTIFICATIONS_IMPORTANCE_HIGH: number, ... }, + +setBadge: (count: number) => void, ... }; export type AndroidForegroundMessage = { diff --git a/native/push/push-handler.react.js b/native/push/push-handler.react.js --- a/native/push/push-handler.react.js +++ b/native/push/push-handler.react.js @@ -263,7 +263,7 @@ if (Platform.OS === 'ios') { CommIOSNotifications.setBadgesCount(curUnreadCount); } else if (Platform.OS === 'android') { - getFirebase().notifications().setBadge(curUnreadCount); + CommAndroidNotifications.setBadge(curUnreadCount); } }