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

21,186

Solution 1

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;
    }
{

Solution 2

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!

Solution 3

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
    }
}
Share:
21,186
Nimit Parekh
Author by

Nimit Parekh

About Me My name is Nimit Parekh. I am a IOS Application developer in India. I have 5+ years development experience in IOS Application and Learning games development in cocos2d. I am a skilled in webdevelopment, as well as a iOS Development Blogger on SugarTin #SOreadytohelp I am available for contract work and doubts. [email protected] For everything else, please contact me at: [email protected]

Updated on March 17, 2020

Comments

  • Nimit Parekh
    Nimit Parekh over 4 years

    Let's say I set 5 local notification for an iPhone application, then the user deletes the app. If the app is installed again, it shows the previous notifications.

    I know the following code deletes all notifications

    [[UIApplication sharedApplication] cancelAllLocalNotifications];
    

    But where do I put that code so that it executes when the application is deleted?

    Or any other way to solve this problem.