pixyzehn blog

iPhone App, Mac App, Programming, Web service, Tool, Evernote, etc

端末での位置情報のオンオフとアプリでの位置情報のオンオフを判定する

http://www.flickr.com/photos/92921037@N00/4732700819
photo by Jorge Quinteros


位置情報のことのメモです。


位置情報のオンオフは、端末での許可、不許可と各々のアプリ単位での許可、不許可があり、もし許可されていないようであれば、それぞれに合わせてアラートなどを提示する必要があります。


locationManager:didFailWithError:というインスタンスメソッドを使うことで設定で位置情報がオフ(端末でのオフとアプリでのオフの両方を含む)になっている場合を取得できることができます。


端末ではオンになっているけど、アプリ単位ではオフになっている場合のときはauthorizationStatusというクラスメソッドを用います。


このクラスメソッドで位置情報取得許可の状態を細かい条件で取得できます。


今回は上記のステータスがkCLAuthorizationStatusAuthorizedというアプリでの位置情報取得が許可されているかどうかを判定するステータスを用いました。


以下文言つきのUIAlertViewも含まれています。

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
        if (![CLLocationManager locationServicesEnabled]) {
            // 端末の位置情報がオフになっている場合
            UIAlertView *alert = [UIAlertView alertViewWithTitle:nil message:@"位置情報が取得できません。\n位置情報の設定がオフになっているか\n取得できない状態です。"];
            [alert addButtonWithTitle:@"OK"];
            [alert show];
        } else {
            if ([CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorized) {
                // アプリの位置情報がオフになっている場合
                UIAlertView *alert = [UIAlertView alertViewWithTitle:nil message:@"端末の[設定] > [プライバシー] > [位置\n情報サービス]の設定を確認してくだ\nさい。"];
                [alert addButtonWithTitle:@"OK"];
                [alert show];
            }
        }
}


間違いなどあればご指摘お願いします。


参考記事


http://d.hatena.ne.jp/shu223/20111001/1321305649

http://blogios.stack3.net/archives/1101