位置情報関連のアラートが出るタイミングを調査しました
はじめに
こんにちは、モバイルアプリサービスの田中孝明です。
iBeaconを用いるアプリを開発された方、iOSが自動で表示するアラートに見覚えはありませんでしょうか?
- 位置情報利用許可アラート
- 位置情報精度のアラート
上記のアラートがどのタイミングで表示されるのかをまとめてみました。
もし追加の情報等ありましたらご指摘いただければ幸いです!
位置情報利用許可アラートについて
トリガーは以下の通り
- iOS 8以降
- CLLocationManagerのrequestAlwaysAuthorizationをコール
以下の場合はアラートが表示される
- 初回インストール後のアプリ起動
- CoreLocationに最初に位置情報サービスにアクセスした時に表示されるとの記載がある
- 数日経過後にアプリを起動した時(未検証)
- WWDC2014のCoreLocationのセッションで「User will be asked again a few days later」と記載はされている
- プライバシー情報リセット時
- 「設定」>「リセット」>「位置情報とプラバシーをリセット」を実施し、アプリを起動する
- 「位置情報とプラバシーをリセット」を実施するとauthorizationStatusがkCLAuthorizationStatusNotDeterminedになるため、requestAlwaysAuthorizationを呼ぶとアラートが表示される
- 「設定」>「リセット」>「位置情報とプラバシーをリセット」を実施し、アプリを起動する
以下の場合はアラートは表示されなかった
- タスクキル→アプリ起動
- 端末の日付を手動で変更→アプリ起動(iOS 8.3、iOS 9.1で確認)
- アプリを削除→再起動→再インストール→アプリ起動
位置情報精度アラートについて
トリガーは以下の通り
- 端末のBluetoothがオフ
- CLLocationManagerのstartRangingBeaconsInRegion:(CLBeaconRegion *)regionをコールした時
以下の場合はアラートが表示される
- 初回インストール後のアプリ起動
- 端末の日付を手動で7日後に変更→アプリ起動(iOS 7.0.2、iOS 8.3、iOS 9.1で確認)
以下の場合はアラートは表示されなかった
- タスクキル→アプリ起動
- アプリを削除→再起動→再インストール→アプリ起動
- 「設定」>「リセット」>「位置情報とプラバシーをリセット」を実施し、アプリを起動する
出典
- CLLocationManager Class Reference
- What’s New in Core Location (2014)
- iOS 8 および iOS 9 のプライバシーと位置情報サービスについて
まとめ
- どちらのアラートも初回インストール後の起動時には表示される
- どちらのアラートも表示後はタスクキル→アプリ起動では表示されない
- 位置情報利用許可アラートは「位置情報とプラバシーをリセット」を実施すると表示される
- 位置情報精度のアラートは「位置情報とプラバシーをリセット」を実施しても表示されない
- 位置情報精度のアラートは日付を7日以上ずらすと表示される