iOS APPIcon角標(biāo)設(shè)置為0不影響通知欄消息處理

本地推送UILocalNotification的applicationIconBadgeNumber影響到角標(biāo)的顯示,不出對通知欄的消息造成影響

????1)當(dāng)applicationIconBadgeNumber>0時,角標(biāo)會隨applicationIconBadgeNumber而變化。

? ? 2)當(dāng)applicationIconBadgeNumber=0時,角標(biāo)維持推送前狀態(tài)不變。

? ? 3)當(dāng)applicationIconBadgeNumber<0時,角標(biāo)置0不顯示。

2.遠(yuǎn)程推送的badge字段,只會影響角標(biāo)的顯示,不會影響通知欄的通知處理。

? ? 1)當(dāng)badge>0時,角標(biāo)會隨badge而變化。

? ? 2)當(dāng)badge=0時,角標(biāo)維持不變。

? ? 3)當(dāng)badge<0時,角標(biāo)維持不變。

3.UIApplication的applicationIconBadgeNumber屬性既會影響角標(biāo)的顯示,又會影響通知欄通知的處理。

????1)當(dāng)applicationIconBadgeNumber>0時,角標(biāo)會隨之變化,通知欄通知不變。

? ? 2)當(dāng)applicationIconBadgeNumber=0時,角標(biāo)變?yōu)?不顯示,通知欄通知清空。

? ? 3)當(dāng)applicationIconBadgeNumber<0時,角標(biāo)變?yōu)?不顯示,通知欄通知清空。

問題來了,如何處理3中提到的applicationIconBadgeNumber,達(dá)到APP Icon上的角標(biāo)消息在APP從前臺切刀后臺后,消息提示消失,而不影響通知欄的消息呢?

duziteng124的一篇博文(地址:http://blog.csdn.net/duziteng124/article/details/50538838)中經(jīng)過詳細(xì)討論,得出如下結(jié)論:

一旦將程序的角標(biāo)從非零置為零,就會清空通知欄的所有通知。如果想清除角標(biāo)但不清空通知欄,有如下方法。

? ? ? 1.發(fā)送一條遠(yuǎn)程推送,推送內(nèi)容只有badge,并將badge的值設(shè)為負(fù)數(shù)。此時程序角標(biāo)會消失但是通知欄的推送消息不清除。

? ? ? 2.同樣的方法,發(fā)送一條本地推送。

本人采用的是方法2,發(fā)送一條本地推,但是經(jīng)過測試,對于iOS 11.x 系統(tǒng)無效,但是通過嘗試發(fā)現(xiàn)iOS 11.x 系統(tǒng)只需要將applicationIconBadgeNumber 設(shè)為-1既可以清楚icon上的消息提示,同時不清楚通知欄的消息,具體代碼如下:

- (void)applicationWillResignActive:(UIApplication *)application {

? ????? if ([UIApplication sharedApplication].applicationIconBadgeNumber) { ? ?

?????????????? if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 11.0) { ? ? ? ? ? ? ????????????????????????[[UIApplication sharedApplication] setApplicationIconBadgeNumber:-1]; ? ? ?

? ? ? ? ? ? ? ? } else { ? ? ? ? ?

????????????????????? UILocalNotification *localNotification = [[UILocalNotification alloc] init]; ? ? ?

? ????????????????????// 設(shè)置通知的發(fā)送時間,單位秒 ? ? ?

? ? ? ? ? ? ? ? ? ? ? ?localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:0.5]; ? ?

? ? ????????????????????//收到通知時App icon的角標(biāo)? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ?localNotification.applicationIconBadgeNumber = -1; ? ?

? ? ? ? ? ? ? ? ? ? ? ?// 3.發(fā)送通知(?? : 根據(jù)項(xiàng)目需要使用) ? ? ?

????????????????????????? [[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; ? ?

????????????????? } ? ?

????} ? ?

????????[JPUSHService setBadge:0];

}


本文引用了簡書作者tinghua的的文章“iOS推送角標(biāo)與通知欄變化總結(jié)”的文章,附上地址文章地址:http://www.itdecent.cn/p/4a835578ea9a

同時引用了duziteng124的一篇博文(地址:http://blog.csdn.net/duziteng124/article/details/50538838)中的討論結(jié)論

驗(yàn)證的系統(tǒng)(機(jī)型)如下:iOS8.1.1(iPhone 5s),iOS 9.3.4(iPhone 4s), iOS 10.2(iPhone 6sP), iOS 11.1.1(iPHone 6), iOS11.2(iPhone 8), 也就是說在iOS 11 以下的系統(tǒng)duziteng124方法有效,iOS11及以上的系統(tǒng)需要直接設(shè)置[[UIApplication sharedApplication] setApplicationIconBadgeNumber:-1];? 這個或許是系統(tǒng)問題造成的bug,后續(xù)系統(tǒng)升級會不會有類似問題,需要再做 驗(yàn)證。僅供參考!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 許多集成的步驟個推官網(wǎng)都有了,這里只寫關(guān)于推送的遠(yuǎn)程推送和本地通知的步驟和代碼。APP在后臺時:走蘋果的APNS通...
    AllureJM閱讀 2,954評論 1 9
  • 極光推送: 1.JPush當(dāng)前版本是1.8.2,其SDK的開發(fā)除了正常的功能完善和擴(kuò)展外也緊隨蘋果官方的步伐,SD...
    Isspace閱讀 6,873評論 10 16
  • iOS里清程序角標(biāo)的時候會把通知欄的推送消息也清了。試驗(yàn)了好久得到了一些結(jié)論,記錄下結(jié)果。推送分為遠(yuǎn)程推送和本地推...
    向晚forever閱讀 4,229評論 0 1
  • 概述 在多數(shù)移動應(yīng)用中任何時候都只能有一個應(yīng)用程序處于活躍狀態(tài),如果其他應(yīng)用此刻發(fā)生了一些用戶感興趣的那么通過通知...
    莫離_焱閱讀 6,708評論 1 8
  • 溝通是一種能力,無論是在工作,還是生活中,良好的溝通會減少許多摩擦。 首先,我們來分析一下什么情況...
    菠蘿34閱讀 352評論 0 0

友情鏈接更多精彩內(nèi)容