无法从通知中心删除推送通知

时间:2013-01-29 10:40:25

标签: ios objective-c cocoa

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

我将上述代码添加到didfinishLaunchingWithOptions但是当用户在其通知中心点按通知并进入我的应用时,通知不会被清除。

编辑:

我也尝试将其添加到我的代码中:

  

你还需要增加然后减少你的徽章   如果您正在尝试,请使用application:didReceiveRemoteNotification:方法   从消息中心清除消息,以便在用户时   通过按下消息中心的通知进入应用程序   也很清楚,即:

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

如此处所述:iOS application: how to clear notifications?但通知仍无法从通知中心中清除

3 个答案:

答案 0 :(得分:5)

我刚刚手动添加了一个徽章编号到我的应用程序并粘贴了

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

到我的AppDelegate。对我来说,这就像一个魅力。 请注意,didfinishLaunchingWithOptionsapplicationDidBecomeActive与Mouhammad Lamaa解释的不同。如果您将其粘贴到AppDelegate并点按通知中心的通知,则应该消失。如果不是,您的应用程序可能会在激活后创建新通知吗?

答案 1 :(得分:0)

添加此代码

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

在您的应用首次发布时发布的didfinishlaunchingwithoptions。如果您的应用在后台运行,则didfinishlaunchingwithoptions将无法启动。

答案 2 :(得分:0)

当用户从通知操作中打开应用程序时 - 它将以

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

但当应用程序处于后台时,它会调用

- application:didReceiveRemoteNotification:

方法[[UIApplication sharedApplication] cancelAllLocalNotifications];也只取消已注册的LOCAL通知。推送通知无法取消 - 它们立即发送并仅执行一次。