LoginSignup
2
1

More than 5 years have passed since last update.

CoreLocation許可ダイアログが消えてしまう

Posted at

位置情報を使おうと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];
}
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1