Browse Source

Add option to display a message or just to update the badge (hasAction = not). And don't play sound if nothing is specified

Samuel Michelot 12 years ago
parent
commit
ba9f4f63af
1 changed files with 12 additions and 3 deletions
  1. 12 3
      src/ios/APPLocalNotification.m

+ 12 - 3
src/ios/APPLocalNotification.m

@@ -106,16 +106,25 @@
 	NSString*            title              = [options objectForKey:@"title"];
 	NSString*            sound              = [options objectForKey:@"sound"];
 	NSString*            repeat             = [options objectForKey:@"repeat"];
+    bool                 hasAction          = ([[options objectForKey:@"hasAction"] intValue] == 1)?YES:NO;
 	NSInteger            badge              = [[options objectForKey:@"badge"] intValue];
-
 	NSDate*              date               = [NSDate dateWithTimeIntervalSince1970:timestamp];
+    
 	UILocalNotification* notification       = [[UILocalNotification alloc] init];
 
 	notification.fireDate                   = date;
 	notification.timeZone                   = [NSTimeZone defaultTimeZone];
 	notification.repeatInterval             = [[[self repeatDict] objectForKey: repeat] intValue];
-	notification.alertBody                  = title ? [NSString stringWithFormat:@"%@\n%@", title, msg] : msg;
-	notification.soundName                  = sound;
+    if ([msg isEqualToString:@""]) {
+        //No message, we just want to update the badge
+        notification.alertBody = nil;
+    } else {
+        notification.alertBody              = title ? [NSString stringWithFormat:@"%@\n%@", title, msg] : msg;
+    }
+	if ( ! [sound isEqualToString:@""]) {
+        notification.soundName              = sound;
+    }
+    notification.hasAction                  = hasAction;
 	notification.applicationIconBadgeNumber = badge;
 
     return notification;