Определение пользовательских настроек для обновления фонового приложения в 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; пользователь с ограниченными правами не может включить многозадачность для приложения.