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

我添加了上面的代码,didfinishLaunchingWithOptions但是当用户在他的通知中心点击通知并进入我的应用程序时,通知不会被清除。

编辑:

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

如果您尝试从消息中心清除消息,您还需要增加然后减少 application:didReceiveRemoteNotification:方法中的标记,以便当用户通过按下通知进入您的应用程序时,消息中心也会清除,即:

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

如此处所述:iOS应用程序:如何清除通知?但通知仍然无法从通知中心清除

4

3 回答 3

5

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

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

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

于 2013-01-29T12:17:24.680 回答
0

添加此代码

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

didfinishlaunchingwithoptions您的应用程序首次启动时启动。如果您的应用程序在后台运行,didfinishlaunchingwithoptions则不会启动。

于 2013-01-29T10:49:17.367 回答
0

当用户从通知操作打开应用程序时 - 它启动

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

但是当应用程序在后台时,它会调用

- application:didReceiveRemoteNotification:

也方法[[UIApplication sharedApplication] cancelAllLocalNotifications];仅取消注册的本地通知。推送通知不能被取消——它们会立即发送并且只执行一次。

于 2013-01-29T14:13:34.433 回答