這篇文章主要介紹iOS消除應用角標的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
應用角標
1>何為應用角標
應用角標就是底下截圖這哥們,本初截圖是MAC上截的,手機上也是一樣的效果:
2>應用角標原理
應用角標其實是由系統設置的,APNs將推送的消息傳送到系統的時候根據上面的消息payload內容中的badge數值來給應用的圖標賦值,這樣應用的HomeScreen上顯示的圖標右上角就會出現相應的數字,不管你應用啟動沒啟動都會顯示相應的數字。所以如果是我們自己后臺來實現這個推送功能的話,那么就需要一套角標邏輯來完善用戶體驗了。
消除角標
一般情況下,我們都會用此方法來消除角標:
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
然而這種方法會使得系統通知欄的歷史推送消息全部被清除。
試了下即使用 iOS 10 的消息推送框架 UserNotification 也存在這種情況。
會造成相同效果的還有
[UIApplication sharedApplication].scheduledLocalNotifications = nil;
解決方案:
- (void)applicationDidEnterBackground:(UIApplication *)application { UILocalNotification *clearEpisodeNotification = [[UILocalNotification alloc] init]; clearEpisodeNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:1]; clearEpisodeNotification.timeZone = [NSTimeZone systemTimeZone]; clearEpisodeNotification.applicationIconBadgeNumber = -1; [[UIApplication sharedApplication] scheduleLocalNotification: clearEpisodeNotification]; }
在程序退到后臺后,添加該通知。
關鍵的地方在于 applicationIconBadgeNumber 是 -1。
接著你可以看到紅點帶著動畫優雅地消失了,
同時,歷史推送消息被保留了下來。
不過,上述這個方式到 iOS 11 就失效了。
本來以為沒轍了,直到發現某個新聞客戶端仍然可以實現。
于是,我反編譯了該新聞客戶端。
從 applicationDidEnterBackground 入手,很快就找到了相關代碼。
那么答案就出來了,直接使用 UserNotifications 即可,猜測 badge 應該還是 -1。
- (void)applicationDidEnterBackground:(UIApplication *)application { UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc] init]; content.badge = @(-1); UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:@"clearBadge" content:content trigger:nil]; [[UNUserNotificationCenter currentNotificationCenter] addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) { }]; }
最后記得不要設置 title,否則會收到空白通知。
以上是“iOS消除應用角標的方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創新互聯網站建設公司行業資訊頻道!
另外有需要云服務器可以了解下創新互聯建站vcdvsql.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網站名稱:iOS消除應用角標的方法-創新互聯
網站URL:http://vcdvsql.cn/article14/jioge.html
成都網站建設公司_創新互聯,為您提供微信公眾號、服務器托管、網站營銷、企業建站、自適應網站、網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯