Ios n内部一致性例外情况:';无效参数不满足:!stayUp | | CLClientIsBackgroundable(内部客户)和#x27;

Ios n内部一致性例外情况:';无效参数不满足:!stayUp | | CLClientIsBackgroundable(内部客户)和#x27;,ios,objective-c,ios9,xcode7,cllocationmanager,Ios,Objective C,Ios9,Xcode7,Cllocationmanager,我试图让我的应用程序在Xcode 7测试版中运行,但遇到了以下异常: NSInternalInconsistencyException: 'Invalid parameter not satisfying: !stayUp || CLClientIsBackgroundable(internal->fClient)' 以下是调用堆栈: 0 CoreFoundation 0x00000001063a89b5 __exceptionPreproc

我试图让我的应用程序在Xcode 7测试版中运行,但遇到了以下异常:

NSInternalInconsistencyException: 'Invalid parameter not satisfying: !stayUp || CLClientIsBackgroundable(internal->fClient)'
以下是调用堆栈:

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
...


有人在iOS 9 beta 5上看到过吗?

我通过做以下两件事来解决这个问题:

  • 在Info.plist中添加了
    UIBackgroundModes
    “位置”
  • NSLocationAlwaysUsageDescription
    添加到Info.plist
从iOS 11开始,密钥命名为:

  • nsLocationAlways和WhenUsageDescription
    nsLocationWhenUsageDescription

如果您像我一样想在单独的项目模块/静态库中使用
[CLLocationManager SetAllowsBackgroundLocationUpdate::
,这里有另一个解决方案。如果使用该模块/库的应用程序不具备位置后台功能,则会发生此崩溃。。。我使用了以下方法来确保呼叫安全:

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

我们有iOS应用程序和通知小部件+手表应用程序。以下代码不位于Watchkit扩展中的任何其他位置:


#如果!延伸
self.startUpdatingLocationAllowingBackground()的
#恩迪夫


我们不需要查询位置或其他业务需求,这是该应用程序在所有域(不仅仅是ADP/iTC)中的总体设置的基础。

其他选项:如果您在目标->功能中选择了后台模式,请确保您选择了任何后台选项。
你告诉Xcode你将在后台使用一些东西,但你不告诉它你将使用什么

我在Hybrid应用程序上遇到了同样的问题

我已经启用了后台模式

苹果拒绝了我的应用程序。表示背景模式没有任何功能

因此,我在“BackgroundGeolocationDelegate.m”上做了以下更改

1.
locationManager.allowsBackgroundLocationUpdates=否

  • 再也没有撞车了。
    注意*:修复仅适用于混合应用程序

    这也发生在我身上。而不是把后台功能打开,并有可能被苹果拒绝,因为你不需要后台位置,把所有剩余的背景位置。很有可能是你从一个旧的应用程序中复制并粘贴了定位功能,或者可能是从一个网站上复制并粘贴了定位功能,但没有人这么做。无论如何

    您需要评论或完全删除: 这可能在locationmanager功能中

    //for use in background
    self.locationManager.allowsBackgroundLocationUpdates = true
    
    在您的视图中,也会出现“加载”和“或”视图, 你需要评论或者把它也删掉

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

    如果在调用该功能时将这些功能保留在中,应用程序将抱怨该功能未打开

    我们需要添加UIBackground模式功能。
    在我的情况下,CLLocation manager在后台模式下工作,我选中了添加到Info.plist中的
    位置更新
    键。

    只需选择你的应用程序方案并根据下面的图片转到功能,一切都应该正常


    我也有类似的问题。下面是修复此崩溃问题的步骤(使用Xcode 11.3)

  • 在项目的
    Info.plist
    中添加
    Privacy-Location usage description
  • 在项目目标中添加
    后台模式
    作为
    功能
  • 选择
    位置更新
    选项

  • 在这种情况下,您可以返回自己的帖子,了解如何修复它:o) 在任何iOS 9上都可以看到Swift 4。这只是一个断言,实际上很有用。
    //for use in background
    self.locationManager.requestAlwaysAuthorization()