清除applicationIconBadgeNumber不删除,设置

application.applicationIconBadgeNumber = -1 
applicationDidBecomeActive

applicationWillEnterForeground,让我来清除徽章数量,而不从移除通知不工作

问题描述:

通知我读过的几篇文章(像这样的https://forums.developer.apple.com/thread/7598)通知中心。当我将application.applicationIconBadgeNumber设置为负数(如-1)时,它会清除我的所有来自Notification Center的通知。是否有另一种方法来清除徽章号码而不删除notifications清除applicationIconBadgeNumber不删除,设置</p> <pre><code>application.applicationIconBadgeNumber = -1 </code></pre> 上<code>applicationDidBecomeActive</code><p>或<code>applicationWillEnterForeground</code>,让我来清除徽章数量,而不从移除通知不工作

+0

当你把它设置为1一样正值,有5个通知符的通知符中心会发生什么。 – Shubhank

+0

这是一个非常好的问题。实际上不能控制通知中心的通知数量。您可以手动计算它们,但在某些情况下,您会发现刚才描述的图标徽章显示数字1的错误,但实际上在通知中心中有5个。 但是,在我的应用程序中,只需清除图标徽章号并将通知留在通知中心以供用户需要时使用。 –

+0

是的,我不是故意说这是一个解决方案。只是想知道在这种情况下会发生什么。通知会被清除还是只剩下最后一个?另外,因为你正在处理推送通知我相信 - 你不能只在其中设置徽章号码为0? – Shubhank

将应用程序标记设置为间接使用空本地通知为我工作,但它是一个黑客持久通知托盘中清除应用程序徽章计数。

if(badgeCount == 0) { 
    //set application badge indirectly with UILocalNotification 
    UILocalNotification *ln = [[UILocalNotification alloc]init]; 
    ln.applicationIconBadgeNumber = -1; 
    [[UIApplication sharedApplication] presentLocalNotificationNow:ln]; 
} 
else { 
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:badgeCount]; 
} 

斯威夫特版本

if badgeCount == 0 { 
    //set application badge indirectly with UILocalNotification 
    var ln = UILocalNotification() 
    ln.applicationIconBadgeNumber = -1 
    UIApplication.sharedApplication().presentLocalNotificationNow(ln) 
} 
else { 
    UIApplication.sharedApplication().applicationIconBadgeNumber = badgeCount 
} 

方法在iOS 9测试和10

+1

感谢您编辑您的答案,Irfan。 – Moritz

+0

不客气。 –

+0

有没有人检查过这是否也适用于iOS 11? – SpacyRicochet