Определение пользовательских настроек для обновления фонового приложения в iOS 7

Начиная с iOS 7, API многозадачности Apple позволяют приложениям работать в трех новых фоновых режимах: фоновая выборка, контент удаленных уведомлений и служба фоновой передачи. Apple также дает пользователям iOS возможность контролировать, разрешено ли запускать все приложения в фоновом режиме или могут ли отдельные приложения работать в фоновом режиме ("Настройки"> "Основные"> "Обновление фонового приложения"). Есть ли способ для моего приложения программно определить, отключил ли пользователь возможность обновления моего приложения в фоновом режиме?

3 ответа

Решение

Это то, что вы ищете.

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.");
}

Обновлено для Swift 3 и iOS10:

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

Проверьте свойство backgroundRefreshStatus UIApplication. Ниже приводится цитата из яблочного документа.

Это свойство отражает, можно ли запустить приложение в фоновом режиме для обработки фоновых действий, таких как обработка фоновых обновлений местоположения и выполнение фоновых выборок. Если ваше приложение зависит от запуска в фоновом режиме для выполнения задач, вы можете использовать значение этого свойства, чтобы определить, возможно ли это сделать, и предупредить пользователя, если это не так. Не предупреждать пользователя, если значение этого свойства установлено в UIBackgroundRefreshStatusRestricted; пользователь с ограниченными правами не может включить многозадачность для приложения.

Другие вопросы по тегам