Начиная с iOS 7, API многозадачности Apple позволяет приложениям запускаться в трех новых режимах фона: выборка фона, информация о удаленном уведомлении и услуга передачи фона. Apple также предоставляет пользователям iOS возможность контролировать, разрешено ли всем приложениям работать в фоновом режиме или могут ли отдельные приложения работать в фоновом режиме («Настройки»> «Основные»> «Обновление фонового приложения»). Есть ли способ для моего приложения программно определить, отключил ли пользователь способность моего приложения обновляться в фоновом режиме?Обнаружение пользовательских настроек для обновления фонового приложения в iOS 7
ответ
Это то, что вы ищете.
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.");
}
Проверьте свойство backgroundRefreshStatus свойства UIApplication. Ниже приводится цитата из документа Apple.
Это свойство отражает, может ли приложение запускаться в фоновом режиме для обработки фонового поведения, например, для обработки фоновых обновлений местоположения и выполнения фоновых настроек. Если ваше приложение полагается на запуск в фоновом режиме для выполнения задач, вы можете использовать значение этого свойства, чтобы определить, возможно ли сделать это, и предупредить пользователя, если это не так. Не предупреждайте пользователя, если для значения этого свойства установлено значение UIBackgroundRefreshStatusRestricted; ограниченный пользователь не имеет возможности включить многозадачность для приложения.
Обновлено для Swift 3 и iOS10:
switch UIApplication.shared.backgroundRefreshStatus {
case .available:
print("Refresh available")
case .denied:
print("Refresh denied")
case .restricted:
print("Refresh restricted")
}
Спасибо, это было полезно. Однако вы можете прокомментировать мой зависимый вопрос в этом отношении - http://stackoverflow.com/questions/19235183/uiapplicationbackgroundrefreshstatusdidchangenotification-usage-without-correspo – Ashok
Привет, должен был вызвать метод thiS. В фоновом режиме его не удается вызвать –
I ' m угадывающий фон appRefresh не имеет ничего общего с Silent уведомлениями, верно? – Honey