Help us understand the problem. What is going on with this article?

iOS 14 でさらに強化された位置情報まわりのプライバシー

※本記事は、一般に公開されている情報を元に作成しています。記事中の画像はWWDCのスライドのものを引用させて頂いております

WWDC 2020 開幕しましたね!位置情報まわりも色々変更があったのでまとめてみます。

正確な位置情報を使用するかどうかユーザーが選択できるようになった

iOS 14 では位置情報の使用許可を求められる際「Precise On(正確な位置情報)」オプションが表示されます。Precise は「正確な」という意味です。

image.png

このオプションをオフにすると、例えば地図を利用する場合はおなじみの青いドットは表示されず、このような大きめの円が現在地として表示されるようになります。

image.png

ユーザーは設定画面からこの設定を変更することができます。

スクリーンショット 2020-06-24 6.51.00.png

実際にユーザーが居る位置とは数キロメートルずれることが予想されるので、正確な位置情報を前提としたアプリは注意が必要ですね。

ユーザーの許可ステータスは accuracyAuthorization で取得できます

image.png

この許可ステータスは iOS、Apple Watch と同期されます。

正確な位置情報を必要としないアプリの場合

正確な位置情報を必要としないことがわかっている場合は Info.plist の NSLocationDefaultAccuracyReduced を true にしておくと、デフォルトでこのオプションが非表示になります。

スクリーンショット 2020-06-24 8.00.36.png

このとき accuracyAuthorization.reducedAccuracy になります。

iOS 14時代の位置情報許可ステータスチェック

前述のように、iOS 14以降は「位置情報の使用を許可しているか」に加え「正確な位置情報の使用を許可しているか」が追加されたので、次のようにステータスをチェックすると良いでしょう。(WWDCのスライドから引用)

switch manager.authorizationStatus() {
case .authorizedAlways, .authorizedWhenInUse:
    // 位置情報の使用を許可している
case .notDetermined, .denied, .restricted:
    // 位置情報の使用を許可していない
default:
    // Unhandled case
}
switch manager.accuracyAuthorization {
case .fullAccuracy:
    // 正確な位置情報の使用を許可している
case .reducedAccuracy:
    // 正確な位置情報の使用を許可していない
default:
    // Unhandled case
}

一時的にPrecise設定をオンにもできる

例えばナビ機能を使うときだけ正確な位置情報の取得を許可する、みたいな使い方もできます。

if locationManager.accuracyAuthorization == .reducedAccuracy {
    locationManager.requestTemporaryFullAccuracyAuthorization(withPurposeKey: "WantsToNavigate") { _ in 
        if self.locationManager.accuracyAuthorization == .fullAccuracy {
            print("begin navigate")
        }
    }
} else {
    print("begin navigate")
}

Info.plist の NSLocationTemporaryUsageDescriptionDictionary には「一時的に正確な位置情報を使う理由」を複数セットできます。

image.png

通常は正確な位置情報を必要としないアプリの場合、とても有効ですね。

App Clips の位置情報について

App Clips から位置情報を使用する場合は選択肢が

  • 1度だけ許可
  • 明日まで許可

になるので注意してください。

スクリーンショット 2020-06-24 8.13.08.png

つまり、App Clips は「常に位置情報を許可する」が選択できません。

※これを、12時を過ぎれば馬車もドレスも魔法が解けて元に戻ってしまうシンデレラに例えて説明してるのが面白かったです。

WidgetKit での位置情報について

Widgets で位置情報を使用するには Info.plist に NSWidgetWantsLocation をセットします。

image.png

Widgets からは位置情報の許可を求めるダイアログは表示できないので、親アプリで位置情報の使用を許可してもらう必要があります。このあたり、どんなフローでユーザーに許可してもらうか?が重要になってきそうですね。

まとめ

今年の What's new in location をひとことでまとめるなら 「必要なときに、必要な権限を」 といったところでしょうか。
Appleが、よりプライバシーに配慮している印象を受けました。

リンク

koogawa
ドラムも叩けるプログラマです。iPhoneアプリ、Androidアプリ、mixiアプリを仕事/趣味で作ってます。主な作品 → http://bit.ly/koogawa
http://d.hatena.ne.jp/koogawa/
alu-inc
アルは、マンガファンがもっとマンガを楽しめるサービスを作るために立ち上げられた、テクノロジー企業です。
https://alu.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした