Détection des parameters utilisateur pour l’actualisation de l’application d’arrière-plan dans iOS 7

À partir d’iOS 7, les API multitâche d’Apple permettent aux applications de s’exécuter dans trois nouveaux modes d’arrière-plan: l’extraction en arrière-plan, le contenu de la notification à distance et le service de transfert en arrière-plan. Apple permet également aux utilisateurs d’iOS de contrôler si toutes les applications sont autorisées à s’exécuter en arrière-plan ou si certaines applications peuvent s’exécuter en arrière-plan (Paramètres> Général> Actualisation de l’application en arrière-plan). Existe-t-il un moyen pour mon application de détecter par programme si l’utilisateur a désactivé la capacité de mon application à actualiser en arrière-plan?

c’est ce que vous recherchez.

if ([[UIApplication sharedApplication] backgroundRefreshStatus] == UIBackgroundRefreshStatusAvailable) { NSLog(@"Background updates are available for the app."); }else if([[UIApplication sharedApplication] backgroundRefreshStatus] == UIBackgroundRefreshStatusDenied) { NSLog(@"The user explicitly disabled background behavior for this app or for the whole system."); }else if([[UIApplication sharedApplication] backgroundRefreshStatus] == UIBackgroundRefreshStatusRessortingcted) { NSLog(@"Background updates are unavailable and the user cannot enable them again. For example, this status can occur when parental controls are in effect for the current user."); } 

Vérifiez la propriété backgroundRefreshStatus de UIApplication. Ce qui suit est cité dans le document Apple.

Cette propriété indique si l’application peut être lancée en arrière-plan pour gérer les comportements en arrière-plan, tels que le traitement des mises à jour de l’emplacement en arrière-plan et l’exécution des récupérations en arrière-plan. Si votre application repose sur un lancement en arrière-plan pour effectuer des tâches, vous pouvez utiliser la valeur de cette propriété pour déterminer si cela est possible et avertir l’utilisateur si ce n’est pas le cas. N’avertissez pas l’utilisateur si la valeur de cette propriété est définie sur UIBackgroundRefreshStatusRessortingcted; un utilisateur restreint n’a pas la possibilité d’activer le multitâche pour l’application.

Mis à jour pour Swift 3 et iOS10:

 switch UIApplication.shared.backgroundRefreshStatus { case .available: print("Refresh available") case .denied: print("Refresh denied") case .ressortingcted: print("Refresh ressortingcted") }