Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

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