From 86fe30c088906e36f989b00da85281cb54158d02 Mon Sep 17 00:00:00 2001 From: kunall17 Date: Sun, 25 Jun 2017 09:42:14 +0530 Subject: [PATCH] Show notification badges on android --- android/app/build.gradle | 2 ++ .../notifications/GCMPushNotifications.java | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 058e37ca733..864c5a7f978 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -148,6 +148,7 @@ buildscript { } //apply plugin: 'io.fabric' repositories { + mavenCentral() maven { url 'https://maven.fabric.io/public' } } @@ -159,6 +160,7 @@ dependencies { compile project(':react-native-vector-icons') compile fileTree(dir: "libs", include: ["*.jar"]) compile "com.android.support:appcompat-v7:23.0.1" + compile "me.leolin:ShortcutBadger:1.1.16@aar" compile "com.facebook.react:react-native:+" // From node_modules compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') { transitive = true; diff --git a/android/app/src/main/java/com/zulipmobile/notifications/GCMPushNotifications.java b/android/app/src/main/java/com/zulipmobile/notifications/GCMPushNotifications.java index 486155e5f58..b64773abe6e 100644 --- a/android/app/src/main/java/com/zulipmobile/notifications/GCMPushNotifications.java +++ b/android/app/src/main/java/com/zulipmobile/notifications/GCMPushNotifications.java @@ -23,6 +23,8 @@ import java.util.LinkedHashMap; import java.util.Locale; +import me.leolin.shortcutbadger.ShortcutBadger; + import static com.zulipmobile.notifications.NotificationHelper.buildNotificationContent; import static com.zulipmobile.notifications.NotificationHelper.clearConversations; import static com.zulipmobile.notifications.NotificationHelper.extractNames; @@ -58,6 +60,11 @@ protected PushNotificationsProp getProps() { public void onOpened() { super.onOpened(); clearConversations(conversations); + try { + ShortcutBadger.removeCount(mContext); + } catch (Exception e) { + Log.e("BADGE ERROR", e.toString()); + } } @@ -74,6 +81,7 @@ protected Notification.Builder getNotificationBuilder(PendingIntent intent) { String stream = getProps().getStream(); String topic = getProps().getTopic(); String baseURL = getProps().getBaseURL(); + int totalMessagesCount = extractTotalMessagesCount(conversations); builder.setSmallIcon(R.drawable.zulip_notification); builder.setAutoCancel(true); @@ -97,10 +105,17 @@ protected Notification.Builder getNotificationBuilder(PendingIntent intent) { } } } else { - builder.setContentTitle(String.format(Locale.ENGLISH, "%d messages in %d conversations", extractTotalMessagesCount(conversations), conversations.size())); + builder.setContentTitle(String.format(Locale.ENGLISH, "%d messages in %d conversations", totalMessagesCount, conversations.size())); builder.setStyle(new Notification.BigTextStyle().bigText(buildNotificationContent(conversations))); builder.setContentText("Messages from " + TextUtils.join(",", extractNames(conversations))); } + + try { + ShortcutBadger.applyCount(mContext, totalMessagesCount); + } catch (Exception e) { + Log.e("BADGE ERROR", e.toString()); + } + if (time != null) { long timStamp = Long.parseLong(getProps().getTime()) * 1000; builder.setWhen(timStamp);