Sto sbattendo la testa. Sto implementando la notifica push. Tutto funziona correttamente (push ricevuto, badge aggiornato) ma in iOS 13.3 l'applicazione del metodo (_: didReceiveRemoteNotification: fetchCompletionHandler :) non viene chiamata quando l'app è in background. Se l'app è in primo piano o utilizza un dispositivo iOS 12, viene chiamato il metodo. Mi registro per la notifica push nel modo seguente:
[[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
dispatch_async(dispatch_get_main_queue(), ^{
[[UIApplication sharedApplication] registerForRemoteNotifications];
});
}
}];
Il payload è impostato come segue
{"aps": {
"badge": 10,
"alert": "test",
"content-available": 1
}}
Ho provato ad aggiungere "Notifiche remote" e "Elaborazione in background" come funzionalità dell'app in tutte le varianti (solo "Notifiche remote" / "Elaborazione in background", senza nessuna di queste funzionalità, abilitando entrambi) senza alcuna modifica. Ho impostato il delegato per UNUserNotificationCenter ma di nuovo senza successo. Ho impostato le intestazioni di conseguenza:
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
Dai documenti si afferma che questo metodo viene chiamato anche quando l'app è in background:
Utilizza questo metodo per elaborare le notifiche remote in arrivo per la tua app. A differenza dell'applicazione: didReceiveRemoteNotification: method, che viene chiamato solo quando l'app è in esecuzione in primo piano, il sistema chiama questo metodo quando l'app è in esecuzione in primo piano o in background.
Cosa mi sto perdendo qui per iOS 13?
application(_:didReceiveRemoteNotification:withCompletionHandler:)
metodo?