2013-08-29 4 views
40

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

ответ

69

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

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

Спасибо, это было полезно. Однако вы можете прокомментировать мой зависимый вопрос в этом отношении - http://stackoverflow.com/questions/19235183/uiapplicationbackgroundrefreshstatusdidchangenotification-usage-without-correspo – Ashok

+0

Привет, должен был вызвать метод thiS. В фоновом режиме его не удается вызвать –

+0

I ' m угадывающий фон appRefresh не имеет ничего общего с Silent уведомлениями, верно? – Honey

8

Проверьте свойство backgroundRefreshStatus свойства UIApplication. Ниже приводится цитата из документа 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") 
}