Notificación local silenciosa IOS

¿Podemos tener una notificación local silenciosa en la aplicación IOS? ¿Qué hace un poco de procesamiento de datos en segundo plano sin que el usuario interactúe con él?

Lo que quiero hacer es crear una notificación local silenciosa que se dispare cada 8 am en la mañana y después de que el usuario la reciba, quiero hacer un poco de procesamiento de datos y volver a crear uno nuevo que el usuario pueda ver con los nuevos datos que procesé después de que vi La primera notificación local silenciosa.

Estoy tratando de evitar el uso de notifications push tanto como puedo.

Puede recibir notifications en silencio en segundo plano en iOS, pero necesitará un server para enviar las notifications.

Para hacer esto, habilita el modo de background de Remote notifications en la pestaña Capacidades de su objective:

Captura de pantalla de la configuración de modos de fondo

Luego te registras para application:didFinishLaunchingWithOptions: notifications push en la application:didFinishLaunchingWithOptions: with

 UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeNone categories:nil]; [[UIApplication shanetworkingApplication] registerUserNotificationSettings:notificationSettings]; 

Mientras el usuario deja que su aplicación envíe notifications push, recibirá el token del dispositivo:

  -(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken; 

Si algo sale mal, se llamará al manejador de fallas:

 - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError: 

deviceToken el deviceToken a su server y le indica que envíe una notificación de inserción silenciosa a ese deviceToken en la hora local del dispositivo de 8AM.

Ese dispositivo tendrá el siguiente método de delegado de aplicación llamado:

  - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler; 

y podrás hacer tu procesamiento de datos.

¡Fácil!

¡No olvides llamar al manejador de finalización cuando hayas terminado!