14
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

iOS 13ではCLLocationManagerでrequestAlwaysAuthorizationを呼んでも常に許可という選択肢はでない

Last updated at Posted at 2019-08-15

iOS 12まで

ジオフェンスなどで常に位置情報を取りたいときは以下のコードで常に許可を得るようにしていました。

var locationManager = CLLocationManager()
locationManager.requestAlwaysAuthorization()

上記コードで常に許可の選択肢をユーザーに押してもらえればOKです。

iOS 13から

iOS 13から上記コードでは
IMG_1380.jpg
このような聞かれ方になって「常に許可」という選択肢がなくなっています。「1度だけという選択肢が増えています」
ちなみに「1度だけ許可」という状態は常に許可と近い状態になるようでジオフェンスも正常に働きました。もちろんしばらくすると使えなくなるのですが。

ここからユーザーに常に許可を得るにはまずは「Appの使用中は許可」を選択してもらいます。
それでジオフェンスなどのを動かして、実際に必要になる時が来るとOS側で勝手にユーザに常に許可のダイアログを出してくれます。
IMG_1379.jpg
見てもらえればわかると思うのですが、アプリ内ではなくホーム画面にあるときにアラートが表示されます。この画像のように常に許可の選択肢が出て、ようやくここで常に許可を取得することができます。
環境はiOS 13 beta 6で試しています。
必要になった段階で確認が入るので便利かと思います。ただこの確認が遅れる可能性もあるのでそこは注意すべきとこかと思います。
動作確認のみして、特にコードの変更はなく済みました。

この辺の内容はWWDCのビデオ
の2分〜7分くらい見ればわかるので確認してみてください。日本語字幕も入っているのでわかるかと思います。

定期的な位置情報許可設定確認のダイアログ

2019/10/24 追記
IMG_0008.jpg
常に位置情報を取得するよう許可を得た後も、上記画像が定期的に出現する。
ユーザーになんのために位置情報を取得しているか明示しておかないと、ここで拒否されてしまう可能性が高いため、運用方法には注意したい。

14
9
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
14
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?