segundo plano localizacion actualizacion actividad activar objective-c background multitasking ios7 user-settings

objective c - localizacion - Detección de la configuración del usuario para la actualización de la aplicación en segundo plano en iOS 7



actividad en segundo plano iphone (3)

A partir de iOS 7, las API multitarea de Apple permiten que las aplicaciones se ejecuten en tres nuevos modos de fondo: búsqueda de fondo, contenido de notificación remota y servicio de transferencia de fondo. Apple también ofrece a los usuarios de iOS la capacidad de controlar si todas las aplicaciones pueden ejecutarse en segundo plano o si se pueden ejecutar aplicaciones individuales en segundo plano (Configuración> General> Actualizar aplicación en segundo plano). ¿Existe alguna forma para que mi aplicación detecte mediante programación si el usuario ha desactivado la capacidad de mi aplicación para actualizar en segundo plano?


Actualizado para Swift 3 y iOS10:

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


Compruebe la propiedad backgroundRefreshStatus de UIApplication. Lo siguiente se cita del documento de Apple.

Esta propiedad refleja si la aplicación se puede iniciar en segundo plano para manejar comportamientos en segundo plano, como procesar actualizaciones de ubicación en segundo plano y realizar búsquedas en segundo plano. Si su aplicación se basa en iniciarse en segundo plano para realizar tareas, puede utilizar el valor de esta propiedad para determinar si es posible hacerlo y advertir al usuario si no lo es. No avise al usuario si el valor de esta propiedad está establecido en UIBackgroundRefreshStatusRestricted; un usuario restringido no tiene la capacidad de habilitar la multitarea para la aplicación.


Esto es lo que buscas.

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