web-dev-qa-db-fra.com

Détection des paramètres utilisateur pour l'actualisation de l'application en arrière-plan dans iOS 7

À partir d'iOS 7, les API multitâches d'Apple permettent aux applications de s'exécuter dans trois nouveaux modes d'arrière-plan: récupération d'arrière-plan, contenu de notification à distance et service de transfert en arrière-plan. Apple donne également aux utilisateurs iOS la possibilité de contrôler si toutes les applications sont autorisées à s'exécuter en arrière-plan ou si des applications individuelles 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 à se rafraîchir en arrière-plan?

45
Sydney

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] == UIBackgroundRefreshStatusRestricted)
{
    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.");
}
76
dubemike

Vérifiez la propriété backgroundRefreshStatus d'UIApplication. Ce qui suit est extrait de Apple document.

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 de récupérations en arrière-plan. Si votre application dépend d'être lancée 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 pour 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 UIBackgroundRefreshStatusRestricted; un utilisateur restreint n'a pas la possibilité d'activer le multitâche pour l'application.

8
Leo Liu

Mis à jour pour Swift 3 et iOS10:

switch UIApplication.shared.backgroundRefreshStatus {
case .available:
    print("Refresh available")
case .denied:
    print("Refresh denied")
case .restricted:
    print("Refresh restricted")
}
6
Andrew K