2015-08-14 7 views
18

Ben Xcode 7 beta çalışan Uygulamamı almaya çalışıyorum ama bu durum düşüyorum:NSInternalInconsistencyException: 'Geçersiz parametre tatmin edici değil:! StayUp || CLClientIsBackgroundable (içten> 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 
... 

Has: Burada

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

callstack var Bunu iOS 9 beta 5'te gören oldu mu?

+0

Herhangi bir iOS 9'da görüldü. Bu sadece bir iddia, aslında yararlı. – igraczech

cevap

42

bu iki şeyi yaparak bu çözmek için başardınız:

  • iOS itibariyle

info.plist için NSLocationAlwaysUsageDescription eklendi info.plist için UIBackgroundModes 'yerini' eklendi 11, tuşlar adlandırılır:

  • NSLocationAlwaysAndWhenInUseUsageDescription ve NSLocationWhenInUseUsageDescription
+0

http://stackoverflow.com/questions/30808192/allowsbackgroundlocationupdates-in-cllocationmanager-in-ios9 – igraczech

+7

Bu, bulmak, düzeltmek için kendi yayına geri döndüğünüz bir durumdur. : o) – igraczech

+1

Swift 4 ile çalıştım. –

5

Başka bir çözüm, eğer benden farklı bir proje modülü/statik kitaplığında [CLLocationManager setAllowsBackgroundLocationUpdates:] kullanmak isterseniz.

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

Biz iOS Uygulaması & Bildirim Widget vardır: o modül/kitaplığını kullanarak uygulamanın konum arka plan yeteneği yoksa bu kilitlenme alırsınız ... Ben çağrı kasa yapmak için aşağıdaki yöntemi yapılan + İzle App. Sadece başka bir yerde Watchkit Uzantısı ikamet etmez kod aşağıdadır:

#if !EXTENSION self.startUpdatingLocationAllowingBackground() #endif

Biz tüm etki (sadece ADP bu uygulamanın genel kurulum için bir üs konumu veya diğer iş gereksinimleri, sorgulamak gerekmez/iTC).

1

Diğer seçenek: Hedeflerde arka plan modlarını seçtiyseniz -> Yetenekler, seçilen arka plan seçeneklerinden herhangi birine sahip olduğunuzdan emin olun. Xcode'a arka planda bir şey kullanacağını söylüyorsunuz, ancak sonra ne kullanacağınızı anlatmıyorsunuz.

1

Hibrid uygulamasında aynı sorunla karşılaşıyorum.

Arka plan modunu AÇIK duruma getirdim.

Apple, uygulamamı reddetti. Arka plan modu için herhangi bir özellik olmadığını söyleyerek.

yüzden

1.locationManager.allowsBackgroundLocationUpdates = HAYIR "BackgroundGeolocationDelegate.m" değişiklikleri takip yapılmış;

  1. (authStatus == kCLAuthorizationStatusNotDetermined) halinde { halinde ([locationManager respondsToSelector: @selector (requestWhenInUseAuthorization)]) {// IOS 8.0+ NSLog (@ "BackgroundGeolocationDelegate requestAlwaysAuthorization"); [locationManager requestWhenInUseAuthorization];

} } artık kaza oldu. Not *: Düzeltme yalnızca karma uygulama için

0

Bu bana da oldu. Arka plana ihtiyaç duymadığınızdan, arka plan yeteneklerini Apple tarafından reddedilmek ve potansiyel olarak reddedilmek yerine, tüm kalıntıları arka plan konumlarına çıkarmak gerekir. Oranlar, eski bir uygulamadan veya bir web sitesinden konum fonksiyonunu kopyaladığınız ve yapıştırdığınızdan, bunu yapan bir kişi değil. Neyse.

Yorum yapmaniz veya tamamen çikarmaniz gerekiyor: Bu muhtemelen locationmanager fonksiyonunuzdadir. senin görünümünde Ayrıca

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

yük ve ya görünümü işlev uygulaması olacak çağrıldığında bu bırakırsanız Yorum yapmadan veya yanı

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

bunu almak gerekir, görünür yaptım yeteneği açık değil şikayet.

0

UIBackground Modu yeteneklerini eklememiz gerekiyor. Benim durumumda CLLocation yöneticisi arka plan modunda çalışıyor ve ben Info.plist'e eklenen Location Updates anahtarını kontrol ettim.

İlgili konular