- (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:
ましたが、コードに実装する方法がわかりませんでした。また、それが解決策であるかどうかもわかりません。