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