2014-04-15 2 views
0

을 입력 할 때 호출되지 않습니다. 내 목표는 앱이 전면을 입력 할 때마다 내 위치 정보를 가져 와서 내 일기 예보를 업데이트합니다. 내가 뭘하는 그러나didUpdateLocations는 앱이 전경, 코어 위치, ios

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.locationManager = [[CLLocationManager alloc] init]; 
    self.locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move 
    self.locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m 

} 
- (void)viewWillAppear:(BOOL)animated 
{ 
    self.locationManager.delegate = self; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(enterForeground) name:UIApplicationWillEnterForegroundNotification object:nil]; 
} 
#pragma mark - Click to get weather 
-(void)enterForeground { 
    [self.locationManager startUpdatingLocation]; 
} 

#pragma mark - CLLocationManagerDelegate 
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { 
[email protected]"didUpdateLocations"; 
} 

, enterForeGround입니다 않습니다 내가 땅 이물 입력하지만 didUpdateLocations은 항상 전화를받을 doesnot whenver 전화를받을. 위치 서비스를 위해 중요한 몇 가지 사항을 놓치고 있는지 알지 못합니다. 아이디어가 있으면 조언 해주세요. 감사합니다.

답변

0

didUpdateLocations가 호출된다는 보장은 없습니다. 당신이 할 수있는 일은 viewDidLoad가 호출 될 때, 여러분은 마지막 위치에 que를 요청할 수 있습니다. self.locationManager.location.

이제 타임 스탬프와 해당 위치의 정밀도를 확인할 수 있습니다. 데이터가 너무 오래되었거나 사용자의 요구에 부응하지 않는 경우 startUpdatingLocation을 호출하고 필터와 정확도에 따라 수정본을 얻으면 didUpdateLocations가 호출됩니다.

0

먼저 대상 -> 기능으로 이동하고 "배경 모드"에서 "위치 업데이트"를 선택하여 위치 서비스를 추가해야합니다. 가 두 번째로 당신이 적절하게 어딘가에 위치 업데이트 [self.locationManager startUpdatingLocation]를 시작해야 당신이 응용 프로그램 전경을 배경 모드를 입력하고 다시 입력 할 때 지금

- (void)viewWillAppear:(BOOL)animated 
{ 
    self.locationManager.delegate = self; 
    [self.locationManager startUpdatingLocation] 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(enterForeground) name:UIApplicationWillEnterForegroundNotification object:nil]; 
} 

(viewWillAppear에 이상 제공하면 코드 최선의 선택이 될 것 같다)의 locationManager delegate 메소드를 호출해야합니다.