收到推送通知时清除徽章

Posted

技术标签:

【中文标题】收到推送通知时清除徽章【英文标题】:Clearing the badge when received Push Notification 【发布时间】:2011-04-28 21:16:15 【问题描述】:

当我收到推送通知时,如何清除应用程序图标上显示的徽章?一旦用户点击了推送通知警报的“查看”或点击了应用程序图标,我想清除它。

【问题讨论】:

【参考方案1】:

我怀疑你说的是 SpringBoard 的徽章:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]

【讨论】:

【参考方案2】:

徽章计数设置为零

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]

使用此代码取消所有本地通知:

[[UIApplication sharedApplication] cancelAllLocalNotifications];

用这行代码取消一个本地通知:

[[UIApplication sharedApplication] cancelLocalNotification:theNotification];

这里的Notification是一个UILocalNotification对象,所以为了取消一个特定的通知,你需要抓住它的UILocalNotification。

检查this。

【讨论】:

【参考方案3】:

对于 Mac OS X Lion,它是:

    [NSApp dockTile].badgeLabel = @"";

(Lion 支持徽章类型的推送通知。)

【讨论】:

【参考方案4】:

从 Apple 的文档中,将 application.applicationIconBadgeNumber 设置为您希望在徽章上显示的数字。如果设置为 0,则会被清除。

- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];

    if (localNotif) 
        NSString *itemName = [localNotif.userInfo objectForKey:ToDoItemKey];
        [viewController displayItem:itemName];  // custom method
        application.applicationIconBadgeNumber = localNotif.applicationIconBadgeNumber-1;
    

    [window addSubview:viewController.view];
    [window makeKeyAndVisible];
    return YES;

Reference - Scroll down to the Handling Local and Remote Notifications section just above listing 2.4

【讨论】:

以上是关于收到推送通知时清除徽章的主要内容,如果未能解决你的问题,请参考以下文章

推送通知徽章清除警报

如何在 iOS 中清除推送通知徽章计数?

每当我的应用收到推送通知时,它都会从最后一个徽章编号(不是 0)递增

IBM Worklight 6.1 - 来自推送通知的磁贴徽章从未在 Windows Phone 8 上清除

当应用程序在Phonegap(cordova)的后台状态下收到推送通知时增加徽章编号,

如何在 android 和 ios 收到的推送通知上设置徽章?