2
[[UIApplication sharedApplication] cancelAllLocalNotifications];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];'

I added the above code to didfinishLaunchingWithOptions but when a user taps a notification in his notification center and enters my app the notification does not gets cleared.

Edit:

I also tried adding this to my code:

You Also need to increment then decrement the badge in your application:didReceiveRemoteNotification: method if you are trying to clear the message from the message centre so that when a user enters you app from pressing a notification the message centre will also clear, ie:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 1];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
[[UIApplication sharedApplication] cancelAllLocalNotifications];  

as describes here: iOS application: how to clear notifications? but the notification still won't clear from the notification center

Community
  • 1
  • 1
Segev
  • 19,035
  • 12
  • 80
  • 152

3 Answers3

5

I just Added a Badge number manually to my application and pasted

- (void)applicationDidBecomeActive:(UIApplication *)application
{
      application.applicationIconBadgeNumber = 0;
}

To my AppDelegate. For me this works like a charm. Note that didfinishLaunchingWithOptions and applicationDidBecomeActive are not the same as Mouhammad Lamaa explained. If you paste this to your AppDelegate and tap the notification in notification center it should disapper. If it does not your App maybe creates a new Notification after becoming active?

pmk
  • 1,897
  • 2
  • 21
  • 34
0

add this code

- (void)applicationDidBecomeActive:(UIApplication *)application
{
      application.applicationIconBadgeNumber = 0;
}

the didfinishlaunchingwithoptions launched at the initial launch of your app. if your app the running in the background, didfinishlaunchingwithoptions will not be launched.

Mouhamad Lamaa
  • 884
  • 2
  • 12
  • 26
  • 1
    I have one notification in the nc and my app Is closed. Touching the notification would lunch the app but won't remove the notification. What you suggested is a good idea , if the 'remove' would work.. – Segev Jan 29 '13 at 10:57
0

When the user open application from notification action - it launches with

- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    UILocalNotification *remoteNotif =
        [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    if (remoteNotif) {
        //handle remote notification
    }
    ....
}

But when the app was in background it calls

- application:didReceiveRemoteNotification:

Also method [[UIApplication sharedApplication] cancelAllLocalNotifications]; cancel registered LOCAL notifications only. Push notifications can't be canceled - they delivered immediately and executed only once.

Mikhail
  • 4,271
  • 3
  • 27
  • 39