@@ -10,18 +10,21 @@ public class IosNotification extends PlatformNotification {
1010 private static final String NOTIFICATION_IOS = "ios" ;
1111
1212 private static final String DEFAULT_SOUND = "" ;
13+ private static final int BADGE_UNDEFINED = -1 ;
14+ private static final int DEFAULT_BADGE = 1 ;
1315
1416 private static final String BADGE = "badge" ;
1517 private static final String SOUND = "sound" ;
1618 private static final String CONTENT_AVAILABLE = "content-available" ;
1719
1820 private final boolean soundDisabled ;
21+ private final boolean badgeDisabled ;
1922 private final String sound ;
2023 private final int badge ;
2124 private final boolean contentAvailable ;
2225
2326 private IosNotification (String alert , String sound , int badge ,
24- boolean contentAvailable , boolean soundDisabled ,
27+ boolean contentAvailable , boolean soundDisabled , boolean badgeDisabled ,
2528 ImmutableMap <String , String > extras ,
2629 ImmutableMap <String , Number > numberExtras ,
2730 ImmutableMap <String , Boolean > booleanExtras ) {
@@ -31,6 +34,7 @@ private IosNotification(String alert, String sound, int badge,
3134 this .badge = badge ;
3235 this .contentAvailable = contentAvailable ;
3336 this .soundDisabled = soundDisabled ;
37+ this .badgeDisabled = badgeDisabled ;
3438 }
3539
3640 public static Builder newBuilder () {
@@ -51,8 +55,12 @@ public String getPlatform() {
5155 public JsonElement toJSON () {
5256 JsonObject json = super .toJSON ().getAsJsonObject ();
5357
54- if (badge >= 0 ) {
55- json .add (BADGE , new JsonPrimitive (this .badge ));
58+ if (!badgeDisabled ) {
59+ if (badge >= 0 ) {
60+ json .add (BADGE , new JsonPrimitive (this .badge ));
61+ } else if (badge == BADGE_UNDEFINED ) {
62+ json .add (BADGE , new JsonPrimitive (DEFAULT_BADGE ));
63+ }
5664 }
5765 if (!soundDisabled ) {
5866 if (null != sound ) {
@@ -71,9 +79,10 @@ public JsonElement toJSON() {
7179
7280 public static class Builder extends PlatformNotification .Builder <IosNotification > {
7381 private String sound ;
74- private int badge = - 1 ;
82+ private int badge = BADGE_UNDEFINED ;
7583 private boolean contentAvailable = false ;
7684 private boolean soundDisabled = false ;
85+ private boolean badgeDisabled = false ;
7786
7887 public Builder setSound (String sound ) {
7988 this .sound = sound ;
@@ -90,6 +99,11 @@ public Builder setBadge(int badge) {
9099 return this ;
91100 }
92101
102+ public Builder disableBadge () {
103+ this .badgeDisabled = true ;
104+ return this ;
105+ }
106+
93107 public Builder setContentAvailable (boolean contentAvailable ) {
94108 this .contentAvailable = contentAvailable ;
95109 return this ;
@@ -128,7 +142,8 @@ public Builder addExtra(String key, Boolean value) {
128142 }
129143
130144 public IosNotification build () {
131- return new IosNotification (alert , sound , badge , contentAvailable , soundDisabled ,
145+ return new IosNotification (alert , sound , badge , contentAvailable ,
146+ soundDisabled , badgeDisabled ,
132147 (null == extrasBuilder ) ? null : extrasBuilder .build (),
133148 (null == numberExtrasBuilder ) ? null : numberExtrasBuilder .build (),
134149 (null == booleanExtrasBuilder ) ? null : booleanExtrasBuilder .build ());
0 commit comments