亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS消除應用角標的方法

發布時間:2021-02-19 14:15:29 來源:億速云 閱讀:367 作者:小新 欄目:移動開發

這篇文章主要介紹iOS消除應用角標的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

應用角標

1>何為應用角標

應用角標就是底下截圖這哥們,本初截圖是MAC上截的,手機上也是一樣的效果:

iOS消除應用角標的方法

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 入手,很快就找到了相關代碼。

iOS消除應用角標的方法

iOS消除應用角標的方法

那么答案就出來了,直接使用 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消除應用角標的方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ios
AI

邮箱| 托克逊县| 连云港市| 英山县| 龙州县| 田林县| 宜黄县| 曲沃县| 丁青县| 铅山县| 呼图壁县| 辰溪县| 藁城市| 临沂市| 临潭县| 乌兰浩特市| 酒泉市| 锡林浩特市| 嘉峪关市| 汾阳市| 新巴尔虎左旗| 壤塘县| 左贡县| 库车县| 汉中市| 蕉岭县| 怀化市| 平湖市| 天峻县| 阿坝县| 偃师市| 健康| 苍山县| 宿松县| 临潭县| 新丰县| 故城县| 宽甸| 长泰县| 渭源县| 莆田市|