75
53

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 3 years have passed since last update.

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

Last updated at Posted at 2020-06-24

※本記事は、一般に公開されている情報を元に作成しています。記事中の画像は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が、よりプライバシーに配慮している印象を受けました。

リンク

75
53
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
75
53

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?