2012-10-04 6 views
3

위치 앱을 만듭니다. 그러나 핵심 위치는 작동하지 않습니다. iPhone에서 다른 iPhone 응용 프로그램을 테스트했습니다.
Google 어스, 탐색 소프트웨어와 같습니다. 다른 응용 프로그램도 작동하지 않습니다.
위치가 업데이트되지 않는 이유는 무엇입니까?
왜 'locationManager : didUpdateToLocation : fromLocation :'메시지가 2 번만 호출 되었습니까?
iOS 6 CoreLocation이 작동하지 않습니다.

어쩌면 ... 내 iPhone이 고장 났습니까? 또는 iOS 6 CoreLocation 프레임 워크에 버그가 있습니까?

위치 서비스 -에 아이폰은

의 Info.plist

  • 하는 ARMv7
  • 가속도계
  • 위치 서비스
  • GPS
  • 마이크
  • 자력계 설정 값

코드 예 :

- (CLLocationManager *)setupLocationManager 
{ 
    if ([CLLocationManager locationServicesEnabled] && [CLLocationManager headingAvailable]) { 

    CLLocationManager *locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; 
    locationManager.distanceFilter = kCLDistanceFilterNone; 
    locationManager.headingFilter = kCLHeadingFilterNone; 
    [locationManager startUpdatingLocation]; 
    [locationManager startUpdatingHeading]; 
    return locationManager; 
    } 
    return nil; 
} 

- (CLLocationManager *)locationManager 
{ 
    switch([CLLocationManager authorizationStatus]) 
    { 
    case kCLAuthorizationStatusAuthorized: 
     _deltaTimeLocationReceived = 0.0; 
     if (_locationManager == nil) 
     _locationManager = [self setupLocationManager]; 
     return _locationManager; 

     case kCLAuthorizationStatusDenied: 
     case kCLAuthorizationStatusRestricted: 
     if (_locationManager) 
      _locationManager = nil; 
     return _locationManager; 

     case kCLAuthorizationStatusNotDetermined: 
     _deltaTimeLocationReceived = 0.0; 
     if (_locationManager == nil) 
      _locationManager = [self setupLocationManager]; 
     return nil; 
    } 
    return nil; 
} 

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    NSLog(@"%@ %@", NSStringFromSelector(_cmd), newLocation.description); 
    if (self.locationManager) _locationSignal++; 
} 

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error 
{ 
    NSLog(@"%@ %@", NSStringFromSelector(_cmd), error.description); 
} 
+0

에서 보안 설정을 지우셨습니까? – Jessedc

+0

예 위치 서비스 설정 - 켜짐. 감사. – booiljoung

+0

설정 -> 일반 -> 재설정 -> 위치 및 개인 정보 재설정을 누릅니다. – Jessedc

답변

0

당신이 대리자 메서드에서 어떤 메시지가 있습니까?

메시지가 없으면 수업의 인터페이스 설명을 확인하십시오.

@interface ... < ... CLLocationManagerDelegate ...> 아이폰 OS 6 애플에서

+0

예 대리인을 추가했습니다. 감사. – booiljoung

8

은 AutoPause API를 구현하여 핵심 위치에 대한 변경 사항을 위반했다. AutoPause API는 애플리케이션이 백그라운드로 이동하여 몇 가지 기준 (예 : 사용자가 이동하지 않고 위치 정보가 수정되지 않고 사용자가 작업을 중단 할 때)에 위치 업데이트를 일시 중지합니다. 일시 중지 이벤트를 정확하게 처리하기 위해 Apple은 활동 유형 (예 : 탐색, 피트니스, 기타)을 설정하여 위치 업데이트를 일시 중지할지 여부를 더 잘 예측할 수 있도록 도움을 요청합니다. AutoPause API는 iOS 6에 맞게 응용 프로그램을 컴파일 할 때 기본적으로 활성화됩니다.

쉬운 해결 방법은 'pausesLocationUpdatesAutomatically'를 NO로 설정하여 자동 일시 중지 API를 비활성화하는 것입니다. 앱이 백그라운드로 전환 될 때 6.

자세한 내용 여기 < 아이폰 OS에서 작동하는 데 사용과 같은 위치 업데이트, 심지어 전송됩니다 더 이상 IOS 6에 존재 나던

http://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html

+0

고마워요 andreapavan. – booiljoung

+0

'pausesLocationUpdatesAutomatically = NO'코드를 추가합니다. 나는 그것을 필요로했다. – booiljoung

+0

하지만 자동 일시 중지 콜백이 호출 된 것을 보았습니까? – Naresh

3

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 대리자를.

대신 사용

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray*)locations 

확인 Apple documentation for startUpdateLocation

이 코드 (그리고 pausesLocationUpdatesAutomatically 참조)은 엑스 코드 4.5에서 컴파일 것 (기본 SDK이고 6).

은 6.0 이전의 iOS 버전을 대상으로 할 경우이 매크로

#define IOS_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) 

를 사용하고 CLLocationManager 객체를 생성 할 때마다 컴파일 할 때

if(IOS_VERSION_GREATER_THAN_OR_EQUAL_TO (@"6.0")) 
{ 
    locationManagerObj.pausesLocationUpdatesAutomatically = NO; 
} 

은을 locationManager의 대표는 모든 버전에서 작동합니다 Xcode 4.5

+0

* 지원되는 모든 버전은 의미합니다. –

관련 문제