Насправді в iOS 10 віддалене сповіщення автоматично викликатиме didReceiveRemoteNotification
метод у вашому AppDelegate.
У вас є два способи оновити кількість значків у фоновому режимі.
Я зробив це для мого поточного додатка. Вам також не потрібно розширення служби сповіщень.
1-й шлях:
Надішліть ключ значка APS із своїм корисним навантаженням на APN.
Це оновить кількість значків відповідно до вашого цілого значення у вашому корисному навантаженні значка. напр .:
{
"aps": {
"content-available": 1,
"alert": "Hallo, this is a Test.",
"badge": 2,
"sound": default
}
}
2-й спосіб:
Ви можете змінити додаток application.applicationState та оновити значки .background
. АЛЕ вам слід подбати, щоб не встановити параметр ключа значка у вашому корисному наборі сповіщень, надсилаючи на APN ex
{
"aps": {
"content-available": 1
}
}
Обробляйте оновлення значка відповідно до стану програми:
Ось мій робочий код для оновлення кількості значків без ключа значка в корисному навантаженні для APN.
func application(_ application: UIApplication, didReceiveRemoteNotification
userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print("APN recieved")
let state = application.applicationState
switch state {
case .inactive:
print("Inactive")
case .background:
print("Background")
application.applicationIconBadgeNumber = application.applicationIconBadgeNumber + 1
case .active:
print("Active")
}
}
Скинути кількість значків:
Не забудьте скинути кількість значків, коли ваш додаток повернеться до активного стану.
func applicationDidBecomeActive(_ application: UIApplication) {
application.applicationIconBadgeNumber = 0
}