2016-06-13 53 views
5

通知我讀過的幾篇文章(像這樣的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

回答

2

將應用程序標記設置爲間接使用空本地通知爲我工作,但它是一個黑客持久通知托盤中清除應用程序徽章計數。

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

相關問題