Это правильное поведение для удаленного уведомления.
Ваше приложение не получит вызов didReceiveRemoteNotification
, когда ваше приложение находится в фоновом режиме, , если пользователь не нажмет на уведомление уведомления .
Вот как это работает.
1) Когда ваше приложение находится в фоновом режиме (или приостановлено) и получено удаленное уведомление, отображается системное предупреждение iOS.
2) Если пользователь открывает ваше приложение, нажав на уведомление об уведомлении, то ваше приложение переместится на передний план и будет вызван didReceiveRemoteNotification
.
3) Если пользователь игнорирует уведомление или отклоняет его, то ваше приложение остается в фоновом режиме, и didReceiveRemoteNotification
не будет называться .
Тем не менее, нет необходимости устанавливать значок приложения в коде. Полезная нагрузка для push-уведомлений может включать ключ, который iOS использует для установки значка приложения, когда система получает ваше уведомление.
Вы просто включаете ключ badge
в полезную нагрузку вашего уведомления:
{
"aps" : {
"alert" : {
"title" : "Notification title",
"body" : "Notification body"
},
"badge" : 5
}
}
Я бы посоветовал вам взглянуть на документацию Apple по созданию полезных данных удаленного уведомления, в которой объясняются все параметры:
https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/generating_a_remote_notification?language=objc
При всем этом можно сделать так, чтобы iOS вызывала didReceiveRemoteNotification
, когда ваше приложение находится в фоновом режиме.
Для этого вам необходимо установить параметр content-available
в вашей полезной нагрузке и отправить «тихое» уведомление. Беззвучное уведомление означает, что пользователь никогда не увидит предупреждение, но ваше приложение будет беззвучно выводиться на передний план на конечное время, и будет вызываться didReceiveRemoteNotification
.
Хотя это не подходящий вариант для вашего сценария. Он предназначен для обновления содержимого приложения, а не только для обновления значка.
Однако, если вас интересуют тихие уведомления, вы можете посмотреть документацию здесь:
https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_updates_to_your_app_silently?language=objc