Slide 1

Slide 1 text

2020/07/09 Thu #love_swift WWDC20 “What’s new in location” 位置情報の新機能 1 miharu
 @_m_rn_dev

Slide 2

Slide 2 text

対象としたセッション タイトル “What’s new in location” 位置情報の新機能(27分) https://developer.apple.com/videos/play/wwdc2020/10660/ 内容 • 位置情報の利⽤権限 • 新機能であるApp Clips と Widgets での使い⽅ LTテーマ:WWDC20 “What’s new in location” #love_swift . 2

Slide 3

Slide 3 text

LTテーマ:WWDC20 “What’s new in location” #love_swift . このアプリを使うのに 私について本当にそこまで 知る必要あるの? 3

Slide 4

Slide 4 text

基本⽅針 iOS14ではさらにプライバシーを強化し、ユーザーとの信頼関係が⼤事にされている • ユーザーは必要以上の情報をアプリに共有する必要はない。 • アプリは必要以上の位置情報へのアクセス権限を求めてはいけな い。 LTテーマ:WWDC20 “What’s new in location” #love_swift . 4

Slide 5

Slide 5 text

iOS13 • 使⽤中のみ許可 • ⼀度だけ許可 • 許可しない • 常に許可 iOS14 • 使⽤中のみ許可 • ⼀度だけ許可 • 許可しない • 常に許可 • + • Precise: On/ Off
 =正確な位置情報 位置情報の利⽤権限に新しいオプションが追加 ユーザーは正確な位置情報ではなく、おおよその位置情報のみをアプリに付与できる。 LTテーマ:WWDC20 “What’s new in location” #love_swift . Z 新しい概念が追加された 5

Slide 6

Slide 6 text

ソースコードの変更点 CLLocationManagerクラスの承認ステータスのメソッドを廃⽌し、プロパティに置き換える。 LTテーマ:WWDC20 “What’s new in location” #love_swift . 6

Slide 7

Slide 7 text

ソースコードの変更点 アプリがどれだけ正確にユーザーの位置を知ることができるかを示す、新しいインスタンスプロパティが導⼊された。 LTテーマ:WWDC20 “What’s new in location” #love_swift . 7

Slide 8

Slide 8 text

ソースコードの変更点 コールバックが置き換わった。 authorizationStatus または accuracyAuthorization プロパティの値が変更されるたびに呼び出される。 LTテーマ:WWDC20 “What’s new in location” #love_swift . 8

Slide 9

Slide 9 text

ソースコードの変更点 新しいデリゲート・コールバック・メソッドを実装する⽅法。 authorizationStatus と accuracyAuthorization の両⽅の値を確認する必要がある。 LTテーマ:WWDC20 “What’s new in location” #love_swift . 9

Slide 10

Slide 10 text

精度が低いプロパティの時、どのように配信されるか • 以前と同様に didUpdateLocations デリゲートに配信。 • オブジェクトとしては、CLLocationCoordinate2Dの中⼼ 点を持ち、⽔平精度 horizontalAccuracyに⼤きな値(1〜 20 km)を持つ、CLLocationオブジェクト。 • 1時間に4回ほど再計算される。 LTテーマ:WWDC20 “What’s new in location” #love_swift . fullAccuracy reduceAccuracy 10

Slide 11

Slide 11 text

• 別の動画で紹介されてます。 • 7分半と短めなので、気楽に⾒て イメージの補完をば • ”Design for Location Privacy”
 (位置情報のプライバシーの設計)
 https://developer.apple.com/ videos/play/wwdc2020/10162/ ユースケースはMapアプリで LTテーマ:WWDC20 “What’s new in location” #love_swift . 11

Slide 12

Slide 12 text

Q. 正確な位置情報を必要とする機能があるアプリで、ユーザーがおおよその位置情 報しか共有していない場合、開発者はどうしたらいい? A. ユーザーを設定画⾯へ誘導し、常に正確な精度にアップグレードす るように依頼する。 B. プロンプトを表示し、⼀時的な位置精度のアップグレードを依頼す る(アプリを閉じない限り有効)。
 ⚠ なぜ正確な位置情報が必要なのか、明確に説明する⽂字列を表示するために、
 Info.plist の NSLocationTemporaryUsageDescriptionDictionary をキーにした辞書に、 ⽬的キーを追加しなければならない。 LTテーマ:WWDC20 “What’s new in location” #love_swift . 12

Slide 13

Slide 13 text

バックグラウンドでの位置情報の更新 Visits ある空間に⼊ったり、出たりしたときの時刻は正確。 位置情報は精度が低下する。 LTテーマ:WWDC20 “What’s new in location” #love_swift . 13

Slide 14

Slide 14 text

バックグラウンドでの位置情報の更新 Beacons & Regions 低い精度では使えない。 必要になったタイミングで、ユーザーを設定画⾯へ誘導し、常に正確 な精度にアップグレードするように依頼する。 (ユーザーが許可しなかった場合は、⼊退場通知は配信されない)。 LTテーマ:WWDC20 “What’s new in location” #love_swift . 14

Slide 15

Slide 15 text

Q. そもそもアプリの起動時に正確な精度を要求するのは良くないの? 実際に必要かどうか、よく考える必要がある。 可能な場合は、許可された精度を上げなくてもユーザーがアプリと対 話できるような⽅法でアプリを設計してください、とのこと。 LTテーマ:WWDC20 “What’s new in location” #love_swift . 15

Slide 16

Slide 16 text

Q. 逆に正確な精度を必要としないアプリなんだけど?         • 新しい定数を導⼊して、locationManagerで低い精度にできる。 LTテーマ:WWDC20 “What’s new in location” #love_swift . • Info.plistに⽬的キーを設定すると、「Precise: On/ Off」のトグルが 表示されなくなり、デフォルトで低い精度を要求できる。 16

Slide 17

Slide 17 text

1. 「常に許可」ができない。 2. 「使⽤中のみ許可」の代わりに、 「明⽇まで使⽤中のみ許可」。
 ✴ 翌朝には⾃動的にクリアされる。
 1. info.plistにNSWidgetWantsLocation キーを含める必要がある。 2. 位置情報の利⽤許可を要求するプロン プトを表示できない。親アプリから許 可を取得する。 17 App Clips と Widgets での使い⽅ LTテーマ:WWDC20 “What’s new in location” #love_swift . 位置情報を利⽤する場合、アプリと異なる点がある。 App Clips Widgets

Slide 18

Slide 18 text

内容のまとめ • 位置情報の利⽤許可が⼤きく変わった。 • 正確な位置情報か、おおよその位置情報か、という新しい概念が 導⼊された。 • ユーザーが⾃分のデータプライバシーをよりコントロールできる ようになった。 • App Clips と Widgets での使い⽅。 18 LTテーマ:WWDC20 “What’s new in location” #love_swift .