ios objective-c xcode7 ios9

ios - NSInternalInconsistencyException: ''Parámetro no válido no satisfactorio:! StayUp || CLClientIsBackgroundable(internal-> fClient) ''



objective-c xcode7 (8)

Aquí hay otra solución si, como yo, quiere usar [CLLocationManager setAllowsBackgroundLocationUpdates:] en un módulo de proyecto / biblioteca estática independiente. Obtendrá este bloqueo si la aplicación que usa ese módulo / biblioteca no tiene la capacidad de fondo de ubicación ... Hice el siguiente método para hacer que la llamada sea segura:

- (void) setAllowsBackgroundLocationUpdatesSafely { NSArray* backgroundModes = [[NSBundle mainBundle].infoDictionary objectForKey:@"UIBackgroundModes"]; if(backgroundModes && [backgroundModes containsObject:@"location"]) { if([mLocationManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) { // We now have iOS9 and the right capabilities to set this: [mLocationManager setAllowsBackgroundLocationUpdates:YES]; } } }

Estoy tratando de hacer que mi aplicación funcione en Xcode 7 beta pero estoy golpeando esta excepción:

NSInternalInconsistencyException: ''Invalid parameter not satisfying: !stayUp || CLClientIsBackgroundable(internal->fClient)''

Aquí está el callstack:

0 CoreFoundation 0x00000001063a89b5 __exceptionPreprocess + 165 1 libobjc.A.dylib 0x0000000105e20deb objc_exception_throw + 48 2 CoreFoundation 0x00000001063a881a +[NSException raise:format:arguments:] + 106 3 Foundation 0x00000001036f8b72 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 198 4 CoreLocation 0x00000001031c7fe3 CLClientGetCapabilities + 8270 5 peach 0x00000001020c0ee9 -[PeachesBatteryOptimizer initWithDelegate:] + 761 6 peach 0x0000000102086d25 -[PeachAgent init] + 1141 7 peach 0x000000010208682c __23+[PeachAgent instance]_block_invoke + 76 8 libdispatch.dylib 0x00000001068604bb _dispatch_client_callout + 8 9 libdispatch.dylib 0x000000010684bedc dispatch_once_f + 543 10 peach 0x00000001020867bb +[PeachAgent instance] + 139 11 peach 0x0000000102086f4d +[PeachAgent createInstanceWithAppKey:andInternal:useDevApi:] + 93 12 peach 0x0000000101e2b710 -[ABCAppDelegate createPeachAgent] + 368 13 peach 0x0000000101e28703 -[ABCAppDelegate application:didFinishLaunchingWithOptions:] + 243 ...

¿Alguien ha visto esto en iOS 9 beta 5?


Esto me pasó a mí también. En lugar de activar la capacidad de fondo y potencialmente ser denegado por Apple, ya que no necesita ubicaciones de fondo, saque todos los remanentes a las ubicaciones de fondo. Lo más probable es que haya copiado y pegado la función de ubicación de una aplicación anterior o tal vez fuera de un sitio web, no es que alguien lo haga. De todas formas.

Necesita comentar o eliminar por completo: probablemente esté en su función de administrador de ubicación.

//for use in background self.locationManager.allowsBackgroundLocationUpdates = true

También en su vista, la carga y / o la vista aparecerán, necesita comentar o eliminar esto también

//for use in background self.locationManager.requestAlwaysAuthorization()

Si deja esto cuando se llama la función, la aplicación se quejará de que la capacidad no está activada.


He logrado resolver esto haciendo estas dos cosas:

  • se agregó la ''ubicación'' de UIBackgroundModes a Info.plist
  • se agregó NSLocationAlwaysUsageDescription a Info.plist

A partir de iOS 11, las claves se denominan:

  • NSLocationAlwaysAndWhenInUseUsageDescription and NSLocationWhenInUseUsageDescription

Me enfrenté con el mismo problema en la aplicación híbrida.

He habilitado el modo de fondo ON.

Apple ha rechazado mi aplicación. Diciendo que no hay características para el modo de fondo.

Así que hice los siguientes cambios en "BackgroundGeolocationDelegate.m"

1.locationManager.allowsBackgroundLocationUpdates = NO;

  1. if (authStatus == kCLAuthorizationStatusNotDetermined) {if ([locationManager respondesToSelector: @selector (requestWhenInUseAuthorization))) {// iOS 8.0+ NSLog (@ "BackgroundGeolocationDelegate requestAlwaysAuthorization"); [locationManager requestWhenInUseAuthorization]; }}

No hubo más choques. Nota *: La corrección es solo para aplicaciones híbridas


Necesitamos agregar las capacidades del modo UIBackground. En mi caso, el administrador de CLLocation está trabajando en modo de fondo y verifiqué la clave de Location Updates que se agrega a Info.plist.


Otra opción: si ha seleccionado modos de fondo en los objetivos -> Capacidades, asegúrese de tener seleccionada alguna de las opciones de fondo. Le dices a Xcode que vas a usar algo en el fondo, pero luego no le dices lo que vas a usar


Simplemente seleccione el esquema de su aplicación y vaya a Capacidades según mi imagen a continuación, todo debería funcionar bien.


Tenemos la aplicación iOS y la aplicación Widget + Watch. El siguiente código no reside en la extensión Watchkit en ningún otro lugar:

#if !EXTENSION self.startUpdatingLocationAllowingBackground() #endif

No necesitamos consultar la ubicación u otros requisitos comerciales, que son base para la configuración general de esta aplicación en todos los dominios (no solo ADP / iTC).