位置情報を使おうとiOS 8から新しくなった許可ダイアログを出したのですが、applicationDidBecomeActiveが呼ばれてしまい、ダイアログが一瞬出ては消えてしまう。
サンプルコード
https://github.com/nmisawa/CoreLocationActivate
CoreLocationの呼び出し部分
CLLocationManager *lm = [[CLLocationManager alloc] init];
if ([CLLocationManager locationServicesEnabled]) {
lm.delegate = self;
lm.distanceFilter = kCLDistanceFilterNone;
lm.desiredAccuracy = kCLLocationAccuracyBest;
}
if ([lm respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[lm requestWhenInUseAuthorization];
} else {
[lm startUpdatingLocation];
}
いたって普通。。
Info.plistにも
NSLocationWhenInUseUsageDescription
を追加しているし、、
はまっていたら、、、
CLLocationManagerをpropertyで宣言すれば良いというのを見つけ、、追い出してやって解決。
I
@property (strong, nonatomic) CLLocationManager *locationManager;
一体この時間は何だったんだ。。
githubにあげたソースコードも修正しました。
lm = [[CLLocationManager alloc] init];
if ([CLLocationManager locationServicesEnabled]) {
lm.delegate = self;
lm.distanceFilter = kCLDistanceFilterNone;
lm.desiredAccuracy = kCLLocationAccuracyBest;
}
if ([lm respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[lm requestWhenInUseAuthorization];
} else {
[lm startUpdatingLocation];
}