0
- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation{
    static int i=0;
    if([self getCurrentLocation]==nil){
        i++;
        if(i>3){
            [[self locationManager] stopUpdatingLocation];
            useMyLocation = NO;
            [self locationUpdated];
        }
    }else{
        [self locationUpdated];
    }
}

- (void)alertView:(UIAlertView *)anAlertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if(buttonIndex==1){
    self.useMyLocation = YES;
    [[self locationManager] startUpdatingLocation];
}else{ // buttonIndex==0
    self.useMyLocation = NO;
    [self locationUpdated];
}

}

これは ios 4 および 5 で動作するコードです。私の問題は、ios 6 で動作する位置情報を取得できないことです。アプリはユーザーに許可を求めることさえありません。これを読んだ後、これまでに試したことは次のとおりです。

  • CFBundleDisplayName ソリューション。私はすでに plist に CFBundleDisplayName を持っていました。削除して再度追加しようとしましたが、うまくいきません。

  • 次のように、Location Manager のプロパティ pausesLocationUpdatesAutomatically を NO に設定します。

...

- (CLLocationManager *)locationManager{
        if (locationManager != nil){
            return locationManager;
        }   
        CLLocationManager *tmp = [[CLLocationManager alloc] init];
        tmp.pausesLocationUpdatesAutomatically = NO;  //!@#
        [self setLocationManager:tmp];
        [tmp release];
        [locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
        [locationManager setDelegate:self];
        return locationManager;
    }

についても読みlocationManager:didUpdateLocations:ましたが、コードに実装する方法がわかりませんでした。また、それが解決策であるかどうかもわかりません。

4

1 に答える 1

1

ロケーションマネージャーを起動したことがありますか?

[locationManager startUpdatingLocation];
于 2013-02-05T15:10:38.847 に答える