Me estoy golpeando la cabeza. Estoy implementando notificaciones push. Todo funciona bien (se recibe el envío, se actualiza la insignia) pero en iOS 13.3 la aplicación del método (_: didReceiveRemoteNotification: fetchCompletionHandler :) no se llama cuando la aplicación está en segundo plano. Si la aplicación está en primer plano o usa un dispositivo iOS 12, se llama al método. Me registro para la notificación push de la siguiente manera:
[[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (granted) {
dispatch_async(dispatch_get_main_queue(), ^{
[[UIApplication sharedApplication] registerForRemoteNotifications];
});
}
}];
La carga útil se establece en lo siguiente
{"aps": {
"badge": 10,
"alert": "test",
"content-available": 1
}}
Intenté agregar "Notificaciones remotas" y "Procesamiento en segundo plano" como capacidades de la aplicación en todas las variaciones (solo "Notificaciones remotas" / "Procesamiento en segundo plano", sin ninguna de esas capacidades, permitiendo ambas) sin ningún cambio. Configuré el delegado para UNUserNotificationCenter pero nuevamente sin éxito. Configuré los encabezados en consecuencia:
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
En los documentos, se indica que se llama a este método incluso cuando la aplicación está en segundo plano:
Use este método para procesar notificaciones remotas entrantes para su aplicación. A diferencia de la aplicación: didReceiveRemoteNotification: método, que se llama solo cuando su aplicación se ejecuta en primer plano, el sistema llama a este método cuando su aplicación se ejecuta en primer plano o en segundo plano.
¿Qué me estoy perdiendo aquí para iOS 13?
application(_:didReceiveRemoteNotification:withCompletionHandler:)
método?