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

29,554

Solution 1

I've managed to solve this by doing these two things:

  • added UIBackgroundModes 'location' to Info.plist
  • added NSLocationAlwaysUsageDescription to Info.plist

As of iOS 11, keys are named:

  • NSLocationAlwaysAndWhenInUseUsageDescription and NSLocationWhenInUseUsageDescription

Solution 2

Just select your app scheme and go to Capabilities as per my picture below everything should work fine.

enter image description here

Solution 3

I had similar issue. Below are steps to fix this crash issue (using Xcode 11.3).

  1. Add Privacy - Location usage description in Info.plist of your project.

Step 1

  1. Add Background Modes as Capability in your Project Target.

Step 2

  1. Select Location Update option

Step 3

Solution 4

Here's another solution if like me you want to use [CLLocationManager setAllowsBackgroundLocationUpdates:] in a separate project module / static library. You'll get this crash if the app using that module/library doesn't have the location background capability... I made the following method to make the call safe:

- (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];
        }
    }
}

Solution 5

I faced same issue on Hybrid app.

I have enabled background mode ON.

Apple has rejected my app. Saying there is no features for background mode.

So I made following changes on "BackgroundGeolocationDelegate.m"

1.locationManager.allowsBackgroundLocationUpdates = NO;

  1.  

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

There was no more crash. Note *: Fix is only for hybrid app

Share:
29,554

Related videos on Youtube

DanielG
Author by

DanielG

Updated on July 13, 2022

Comments

  • DanielG
    DanielG almost 2 years

    I'm trying to get my app working in Xcode 7 beta but I'm hitting this exception:

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

    Here's the 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
    ...
    

    Screenshot

    Has anyone seen this on iOS 9 beta 5?

    • igraczech
      igraczech almost 8 years
      Seen on any iOS 9. It's just an assert, actually helpful.
  • igraczech
    igraczech over 8 years
  • igraczech
    igraczech about 7 years
    This is a case where you return to own post to find out, how to fix it. :o)
  • MD Aslam Ansari
    MD Aslam Ansari over 6 years
    Worked for me with Swift 4.