Walę głową Wdrażam powiadomienie push. Wszystko działa dobrze (wypychanie jest odbierane, znaczek jest aktualizowany), ale w iOS 13.3 aplikacja metody (_: didReceiveRemoteNotification: fetchCompletionHandler :) nie jest wywoływana, gdy aplikacja jest w tle. Jeśli aplikacja znajduje się na pierwszym planie lub używa urządzenia z systemem iOS 12, wywoływana jest metoda. Rejestruję się w celu powiadomienia push w następujący sposób:
[[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
dispatch_async(dispatch_get_main_queue(), ^{
[[UIApplication sharedApplication] registerForRemoteNotifications];
});
}
}];
Ładunek jest ustawiony na następujące
{"aps": {
"badge": 10,
"alert": "test",
"content-available": 1
}}
Próbowałem dodać „Zdalne powiadomienia” i „Przetwarzanie w tle” jako funkcje aplikacji we wszystkich odmianach (tylko „Zdalne powiadomienia” / „Przetwarzanie w tle”, bez żadnej z tych możliwości, umożliwiając jedno i drugie) bez żadnych zmian. Ustawiłem delegata dla UNUserNotificationCenter, ale znowu bez powodzenia. Ustawiam odpowiednio nagłówki:
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
Z dokumentów wynika, że ta metoda jest wywoływana nawet wtedy, gdy aplikacja działa w tle:
Ta metoda służy do przetwarzania przychodzących zdalnych powiadomień dotyczących aplikacji. W przeciwieństwie do aplikacji: didReceiveRemoteNotification: metoda, która jest wywoływana tylko wtedy, gdy aplikacja działa na pierwszym planie, system wywołuje tę metodę, gdy aplikacja działa na pierwszym planie lub w tle.
Czego mi brakuje tutaj na iOS 13?
application(_:didReceiveRemoteNotification:withCompletionHandler:)
metodę?