Я стукаю головою. Я впроваджую push-сповіщення. Все працює нормально (натискання отримане, значок оновлюється), але в iOS 13.3 застосовано метод (_: didReceiveRemoteNotification: fetchCompletionHandler :) не викликається, коли програма знаходиться у фоновому режимі. Якщо додаток стоїть на передньому плані або використовується пристрій iOS 12, метод викликається. Я реєструюсь для push-повідомлення таким чином:
[[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
dispatch_async(dispatch_get_main_queue(), ^{
[[UIApplication sharedApplication] registerForRemoteNotifications];
});
}
}];
Корисне навантаження встановлюється наступним чином
{"aps": {
"badge": 10,
"alert": "test",
"content-available": 1
}}
Я намагався додавати "Віддалені сповіщення" та "Фонову обробку" як можливості додатків у всіх варіантах (лише "Віддалене сповіщення" / "Фонова обробка" без жодної з цих можливостей, що дозволяє обидва) без будь-яких змін. Я встановив делегата для UNUserNotificationCenter, але знову без успіху. Я встановив заголовки відповідно:
curl -v \
-H 'apns-priority: 4' \
-H 'apns-topic: xx.xxxxx.xxxx' \
-H 'apns-push-type: alert' \
-H 'Content-Type: application/json; charset=utf-8' \
-d '{"aps": {"badge": 10,"alert": "test", "content-available":1}}' \
--http2 \
--cert pushcert.pem \
https://api.sandbox.push.apple.com/3/device/1234567890
У документах зазначено, що цей метод викликається навіть тоді, коли програма знаходиться у фоновому режимі:
Використовуйте цей метод для обробки вхідних віддалених сповіщень для вашої програми. На відміну від програми: метод didReceiveRemoteNotification: який викликається лише тоді, коли ваша програма працює на передньому плані, система викликає цей метод, коли ваш додаток працює на передньому плані або на задньому плані.
Що мені тут не вистачає для iOS 13?
application(_:didReceiveRemoteNotification:withCompletionHandler:)
метод?