Commit f5d4d432 authored by Sebastián Katzer's avatar Sebastián Katzer
Browse files

Notification on iOS will be canceled if a new one with the same ID was added

parent 60b501ab
Loading
Loading
Loading
Loading
+1 −0
Changes for README.md: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ More informations can be found [here](https://build.phonegap.com/plugins/331).
#### Version 0.7.0 (not yet released)
- [bugfix:] App throws an error on iOS if `message` is null.
- [bugfix:] Removed extra line break on iOS if `title` is null or empty.
- [bugfix:] Notification on iOS will be canceled if a new one with the same ID was added.

#### Version 0.6.3 (12.12.2013)
- [bugfix:] Black screen on Android.
+31 −12
Changes for src/ios/APPLocalNotification.m: 31 added lines, 12 removed lines.
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@

@interface APPLocalNotification (Private)

// Entfernt die zur ID passende Meldung
 - (void) cancelNotificationWithId:(NSString*)notificationId;
- (NSMutableDictionary*) repeatDict;
// Alle zusätzlichen Metadaten der Notification als Hash
- (NSDictionary*) userDict:(NSMutableDictionary*)options;
@@ -47,23 +49,49 @@
        NSArray* arguments                = [command arguments];
        NSMutableDictionary* options      = [arguments objectAtIndex:0];
        UILocalNotification* notification = [self notificationWithProperties:options];
        NSString* notificationId          = [notification.userInfo objectForKey:@"id"];

        [self cancelNotificationWithId:notificationId];

        [[UIApplication sharedApplication] scheduleLocalNotification:notification];
    }];
}

/**
 * Entfernt den anhand der ID angegebenen Eintrag.
 *
 * @param {NSString} id Die ID der Notification
 * Entfernt die zur ID passende Meldung.
 */
- (void) cancel:(CDVInvokedUrlCommand*)command
{
    [self.commandDelegate runInBackground:^{
        NSArray* arguments       = [command arguments];
        NSString* notificationId = [arguments objectAtIndex:0];

        [self cancelNotificationWithId:notificationId];
    }];
}

/**
 * Entfernt alle registrierten Einträge.
 */
- (void) cancelAll:(CDVInvokedUrlCommand*)command
{
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
}

/**
 * Entfernt die zur ID passende Meldung.
 *
 * @param {NSString} id Die ID der Notification
 */
- (void) cancelNotificationWithId:(NSString*)notificationId
{
    NSArray* notifications = [[UIApplication sharedApplication] scheduledLocalNotifications];

    if (notificationId == (NSString*)[NSNull null] || [notificationId isEqualToString:@""])
    {
        return;
    }

    for (UILocalNotification* notification in notifications)
    {
        NSString* id = [notification.userInfo objectForKey:@"id"];
@@ -73,15 +101,6 @@
            [[UIApplication sharedApplication] cancelLocalNotification:notification];
        }
    }
    }];
}

/**
 * Entfernt alle registrierten Einträge.
 */
- (void) cancelAll:(CDVInvokedUrlCommand*)command
{
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
}

/**