[[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?但通知仍无法从通知中心中清除
答案 0 :(得分:5)
我刚刚手动添加了一个徽章编号到我的应用程序并粘贴了
- (void)applicationDidBecomeActive:(UIApplication *)application
{
application.applicationIconBadgeNumber = 0;
}
到我的AppDelegate。对我来说,这就像一个魅力。
请注意,didfinishLaunchingWithOptions
和applicationDidBecomeActive
与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通知。推送通知无法取消 - 它们立即发送并仅执行一次。