Comment recevoir des notifications iOS en arrière-plan sans interaction de l'user

J'ai utiliser les methods suivantes pour recevoir des notifications dans AppDelegate . Lorsque l'user est en premier plan, la notification est reçue comme prévu. Mais si l'user est en arrière-plan, la notification ne recevra (dans AppDelegate) de notification que si l'user a tapé sur une window contextuelle. Comment recevoir une notification sans que l'user ne tape lorsque l'application s'exécute en arrière-plan.

 - (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler { NSLog( @"Handle push from foreground" ); // custom code to handle push while app is in the foreground [[ACBRemoteNotificationManger sharedManager] addNotificationFromUNNotification:notification]; } - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler { NSLog( @"Handle push from background or closed" ); // if you set a member variable in didReceiveRemoteNotification, you will know if this is from closed or background NSLog(@"%@", response.notification.request.content.userInfo); } 

Si c'est vraiment votre condition pour exécuter une méthode / code sur la réception de PUSH en mode d'arrière-plan, vous devez implémenter l' application:didReceiveRemoteNotification:fetchCompletionHandler:

Il est indiqué dans la documentation

Pour prendre en charge ce mode d'arrière-plan, activez l'option Notifications à distance dans la section Modes d'arrièreplan de l'onglet Fonctionnalités de votre projet Xcode.

Pour qu'une notification push triggers une opération quelconque, la charge utile de la notification doit inclure la key content-available le content-available dont la valeur est définie sur 1 . Lorsque cette key est présente, le système réveille l'application en arrière-plan (ou la lance en arrière-plan) et appelle l'application du délégué de l' application:didReceiveRemoteNotification:fetchCompletionHandler: method. Votre implémentation de cette méthode devrait effectuer votre tass désiré en arrière-plan.

Vérifiez également ce lien de doublure

Lorsqu'une notification à distance arrive, le système affiche la notification à l'user et lance l'application en arrière-plan (si nécessaire) afin qu'elle puisse appeler cette méthode. Le lancement de votre application en arrière-plan vous donne le time de traiter la notification et de download datatables qui y sont associées, ce qui réduit le time qui s'écoule entre l'arrivée de la notification et l'affichage de ces données à l'user.

Sinon, la notification PUSH ne peut pas être traitée sans interaction de l'user