真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

iOS消除應(yīng)用角標(biāo)的方法

這篇文章主要介紹iOS消除應(yīng)用角標(biāo)的方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)建站專注于修武企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),購物商城網(wǎng)站建設(shè)。修武網(wǎng)站建設(shè)公司,為修武等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

應(yīng)用角標(biāo)

1>何為應(yīng)用角標(biāo)

應(yīng)用角標(biāo)就是底下截圖這哥們,本初截圖是MAC上截的,手機(jī)上也是一樣的效果:

iOS消除應(yīng)用角標(biāo)的方法

2>應(yīng)用角標(biāo)原理

應(yīng)用角標(biāo)其實(shí)是由系統(tǒng)設(shè)置的,APNs將推送的消息傳送到系統(tǒng)的時(shí)候根據(jù)上面的消息payload內(nèi)容中的badge數(shù)值來給應(yīng)用的圖標(biāo)賦值,這樣應(yīng)用的HomeScreen上顯示的圖標(biāo)右上角就會(huì)出現(xiàn)相應(yīng)的數(shù)字,不管你應(yīng)用啟動(dòng)沒啟動(dòng)都會(huì)顯示相應(yīng)的數(shù)字。所以如果是我們自己后臺(tái)來實(shí)現(xiàn)這個(gè)推送功能的話,那么就需要一套角標(biāo)邏輯來完善用戶體驗(yàn)了。

消除角標(biāo)

一般情況下,我們都會(huì)用此方法來消除角標(biāo):

[UIApplication sharedApplication].applicationIconBadgeNumber = 0;

然而這種方法會(huì)使得系統(tǒng)通知欄的歷史推送消息全部被清除。

試了下即使用 iOS 10 的消息推送框架 UserNotification 也存在這種情況。

會(huì)造成相同效果的還有

[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];
}

在程序退到后臺(tái)后,添加該通知。

關(guān)鍵的地方在于 applicationIconBadgeNumber 是 -1。

接著你可以看到紅點(diǎn)帶著動(dòng)畫優(yōu)雅地消失了,

同時(shí),歷史推送消息被保留了下來。

不過,上述這個(gè)方式到 iOS 11 就失效了。

本來以為沒轍了,直到發(fā)現(xiàn)某個(gè)新聞客戶端仍然可以實(shí)現(xiàn)。

于是,我反編譯了該新聞客戶端。

從 applicationDidEnterBackground 入手,很快就找到了相關(guān)代碼。

iOS消除應(yīng)用角標(biāo)的方法

iOS消除應(yīng)用角標(biāo)的方法

那么答案就出來了,直接使用 UserNotifications 即可,猜測 badge 應(yīng)該還是 -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) {
 }];
}

最后記得不要設(shè)置 title,否則會(huì)收到空白通知。

以上是“iOS消除應(yīng)用角標(biāo)的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


名稱欄目:iOS消除應(yīng)用角標(biāo)的方法
本文路徑:http://weahome.cn/article/pspsoo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部