How to delete all local notifications when an application is deleted from an iPhone How to delete all local notifications when an application is deleted from an iPhone objective-c objective-c

How to delete all local notifications when an application is deleted from an iPhone


As others have mentioned, I think the best way to accomplish this is to have a flag in didFinishLaunchingWithOptions in the application delegate that checks if it is the first launch or not.

If the app is being launched for the first time, you can call

[[UIApplication sharedApplication] cancelAllLocalNotifications];

This will cancel any existing notifications.

For example:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions    // this flag will need to be stored somewhere non-volatile such as using CoreData     // or user defaults    if(flag == nil || [flag count] ==0){        [[UIApplication sharedApplication] cancelAllLocalNotifications];       // update your flag so that it fails this check on any subsequent launches       flag = 1;    }{


Here's what I did:

In Your AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    //Check if its first time    if (![[NSUserDefaults standardUserDefaults] objectForKey:@"is_first_time"]) {        [application cancelAllLocalNotifications]; // Restart the Local Notifications list        [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:YES] forKey:@"is_first_time"];    }    return YES;}

Hope it helps!


For swift 3.0 you can use

if (isFirstLaunch){    UNUserNotificationCenter.current().removeAllPendingNotificationRequests()}

Then add this method to check if this is the first run

var isFirstLaunch: Bool {    get {        if     (NSUserDefaults.standardUserDefaults().objectForKey("firstLaunchDate") == nil) {            NSUserDefaults.standardUserDefaults().setObject(NSDate(),     forKey: "firstLaunchDate")            NSUserDefaults.standardUserDefaults().synchronize()            return true        }        return false    }}