WWDC Quick Look 💓 By SwiftGGTeam
What's new in location

What's new in location

元の動画を見る

ハイライト

iOS 14 では、Core Location の認証が「いつ位置情報にアクセスできるか」から「どれだけ正確な位置情報にアクセスできるか」に拡張されます。開発者は、完全な精度と低減された精度の両方を処理し、関数が本当に必要とする場合にのみ、一時的な正確な位置決めを要求する必要があります。


主要内容

iOS 13 では、位置認証は主に、どのような状況でアプリが位置にアクセスできるかという 1 つの質問に答えます。ユーザーは、アクセスを拒否したり、使用期間中のみアクセスを許可したり、常にアクセスを許可したりできます。このモデルは、アプリが本当に正確な座標を知る必要があるかどうかという、別のよりデリケートな質問には答えていません。

この講義では、この問題を具体的なシナリオに落とし込みます。デート、ローカル アクティビティ、ビデオの地域制限などの機能の場合、多くの場合、ユーザーがおおよそどの都市にいるのかを知るだけで済みます。ナビゲーション、走行記録、特定の場所を離れるときのリマインダーには、正確な位置情報が必要です。 iOS 14 の Precise スイッチは、これら 2 種類の要件を分離し、ユーザーが精度の低下 (おおよその位置情報) を承認できるようにします。

これにより、コアロケーションコードの判定方法が変わります。前に手に入れたauthorizedWhenInUse最後に、多くのアプリはデフォルトで、正確な座標を自分で取得するようになっています。 iOS 14 以降、認証ステータスと精度ステータスは 2 次元になります。開発者は、UI、バックグラウンド機能、App Clip、ウィジェットなどのさまざまな入り口が、精度が低下した状態で何ができるのか、また、いつ完全な精度にアップグレードする必要があるのか​​を説明する必要があります。

詳細

このセッションには公式の「コード」タブ クリップはありません。以下では、トランスクリプトに明確に表示される API、構成項目、および動作のみが使用されており、コード ブロックは追加されません。

認可ステータスが 2 次元になる

03:56CLLocationManager認可ステータスの取得方法が変更になりました。 Apple は古いクラス メソッドを非推奨にし、代わりにインスタンス プロパティを使用してアプリの現在の位置認証ステータスを表します。同時に、新たなaccuracyAuthorizationインスタンスのプロパティはアプリに現在何を取得しているかを伝えますfullまだreduced正確さ。

対応するデリゲートも更新されました。古いdidChangeAuthorizationステータスコールバックは新しいですlocationManagerDidChangeAuthorization代わりの。このコールバックはauthorizationStatusまたはaccuracyAuthorization値が変更されたときに発火します。

キーポイント:

  • 「許可されているかどうか」だけを見ないでください。 「精度が十分かどうか」にもよります。
  • 精度が低下した位置でも合格しますdidUpdateLocations戻り、型はそのままですCLLocation
  • 返されたオブジェクトはCLLocationCoordinate2D中心点とより高い水平精度。
  • 精度の低下 位置は 1 時間に約 4 回再計算されます。
  • この中心点はユーザーの実際の座標ではなく、実際の位置を含むエリアの中心を表すだけです。

一時的なリクエストの完全な精度

(07:21) ユーザーが大まかな位置情報しか提供しないが、機能が実際に正確な位置情報を必要とする場合、アプリには 2 つのオプションがあります。 1 つは、ユーザーを [設定] に送り、Precise を永続的にオンにすることです。もう一つは使うことですCLLocationManager一時的な完全精度要求メソッドは、現在の使用中に 1 回だけ正確な位置を要求します。

マップのナビゲーション エントリはスピーチの例です。おおよその位置は、マップを参照するときに大きな円を表示するのに十分です。現在の場所からナビゲーションを開始すると、マップは正確な場所が必要であると解釈し、アップグレードを要求します。

キーポイント:

  • 一時的なアップグレードは、現在の場所からの移動などの 1 回限りのタスクに適しています。
  • リクエスト時に目的キーを指定する必要があります。
  • これらの説明は Info.plist に配置する必要があります。NSLocationTemporaryUsageDescriptionDictionary下。
  • Core Location は、目的キーに従って対応するコピーを検索し、システム認証プロンプトに表示します。
  • 一時アップグレードのライフサイクルは、iOS 13 の「1 回だけ許可」に似ています。これは、ユーザーがアプリを使用し続ける間有効であり、次回ユーザーが再起動して機能をトリガーしたときに、再度尋ねられる可能性があります。

精度低下による背景測位への影響

(11:22) 背景の位置決めに対する統一された答えはありません。コア ロケーション機能が異なれば、精度が低下するとパフォーマンスも異なります。

重大な位置変更の監視は精度の低下に適応します。更新頻度は通常の位置情報更新と同じで、1 時間に約 4 回です。訪問モニタリングは時間内に正確なままですが、空間情報は精度を低下させます。たとえば、完全な精度のアプリは「10:08 に Apple Park の特定の座標に到着」を受信し、精度を下げたアプリは「10:08 にクパチーノの特定の座標に到着」を受信します。

地域監視とビーコン監視はより厳格になります。完全な精度がない場合、システムはリージョンの開始、リージョンの終了、またはビーコン関連の通知をアプリに配信しません。リマインダーの例は、この違いを示しています。オフィスを出るときのリマインダー機能には、エリアの境界を継続的に正確に判断する必要があるため、完全な精度をオンにするためにユーザーを設定に誘導する必要があります。

キーポイント:

  • おおよその位置情報を使用して実行できる機能は、起動時にユーザーに Precise を強制的に開くべきではありません。
  • 地域またはビーコンに依存する機能には、完全な精度が必要です。
  • 長期にわたる正確な測位を必要とするバックグラウンド機能は、ユーザーに Precise を一時的にアップグレードするのではなく、永続的にオンにするよう要求するのに適しています。

おおよその位置情報のみを積極的にリクエストする

(14:37) 一部のアプリでは、完全な精度が得られたとしても、正確な位置情報を収集すべきではありません。プレゼンテーション用の TV アプリの例: スポーツ イベント、地域のロック、地元のテレビ局のマッチングには位置情報が必要ですが、通常は一般的なエリアのみが必要です。

コアロケーションは新たな機能を提供しますCLLocationAccuracy位置マネージャーが精度の低い位置のみを要求するようにする定数。初めて認証するときにデフォルトで精度の低下を要求するように、Info.plist を通じてアプリを構成することもできます。こうすることで、Precise: On スイッチがシステム プロンプトに表示されなくなり、ユーザーが誤ってより高い精度を指定することがなくなります。

キーポイント:

  • desiredAccuracy主にアプリに必要な測定精度を表現するために使用され、省電力の意味もあります。
  • 精度の低下はプライバシー認証の次元です。ユーザーは、アプリが取得する位置情報の詳細を明確に制御できます。
  • 精度が低下すると、実際の位置が領域に定量化されます。このスピーチでは、実際の座標にランダムなノイズを加えないことが明確に述べられています。
  • 定量化された半径は、都市部では数キロメートル、よりまばらな地域では最大約 10 キロメートル、典型的な値は約 5 キロメートルです。
  • 定量的な結果は、「おそらく私がいる場所」というユーザーの直感と一致するように努めます。たとえば、国境を越える境界線の付近は、ユーザーが期待する側になります。

watchOS、Always 認証、 activityType、App Clip およびウィジェット

(19:57) 精度を下げた API は iOS と watchOS で利用できます。ペアリングされた iPhone と Apple Watch は、従来の位置認証ステータスと同様に精度認証を同期します。時計の接続は、時計アプリで一度だけ許可または一時的な完全精度アップグレードを選択するなど、今年中に一時的な認証ステータスとエンドユーザーのステータスを共有することもでき、電話アプリはこの決定から恩恵を受けることができます。

(21:14) iOS 13.4 以降では、Always 認証パスがより確実になります。 When In Use 認証を取得したアプリは、Always を必要とする機能がトリガーされたときに Always を要求することができ、ユーザーはアプリのコンテキストで即座にそれを検討できるようになります。この講演では、最初から「Always」を要求せず、ユーザーが本当に必要とする機能に到達するまで待つことを明確に推奨しています。

22:44activityType設定にも注意してください。airborne実際の飛行にのみ適しています。fitnessユーザーが明示的に開始する動きにのみ適しています。automotiveNavigation道路を走行することが決定されている車両に適しています。otherNavigationオフロード、ハイキング、ボート、ウォーキング、その他のモバイルシナリオに適しています。他のタイプは、明確な意図が見つからない場合にのみ使用してください。

(23:41) App Clip には、Core Location に関して 2 つの制限があります。Always 認証を取得できません。システムには「明日まで使用中」と表示され、認証は翌朝自動的にクリアされます。ウィジェットは位置認証プロンプトを表示できません。位置情報を使用するウィジェットは Info.plist に追加する必要がありますNSWidgetWantsLocation、認可は親アプリから行われます。

キーポイント:

  • watchOS コンパニオン アプリの一時的な認証ステータスが同期に参加します。
  • 常に認可は特定の機能によってトリガーされる必要があります。
  • App Clip は、Always 認証を必要とする位置情報機能には適していません。
  • ウィジェットでは、親アプリが位置認証を取得する必要があります。

重要ポイント

  • 近似優先のローカルおすすめページを作成します: 最初に精度を下げて、近くのアクティビティ、天気、地域のルールなどの都市レベルのコンテンツを提供します。このように、デフォルトのエクスペリエンスでは正確な座標は必要ありません。チェックからエントリー実装accuracyAuthorization最初は、ユーザーはルーティング、チェックイン、または完全一致機能を入力した場合にのみアップグレードされます。

  • 地図 UI に精度ステータス プロンプトを追加: ユーザーがおおよその位置のみを承認する場合、大きな円を使用して範囲を表現し、現在の状態が精度が低下していることをインターフェイス上で明確に示します。マップスはプレゼンテーションでこのアプローチを採用しました。最初にフルと縮小の 2 つの UI 状態を描画し、次に描画しますlocationManagerDidChangeAuthorization受信ステータスを更新します。

  • 一時的な正確な測位を単一のタスクにバインドする: ナビゲーション、車の検索、走行開始点のキャリブレーションなどのアクションは、一時的な完全な精度に適しています。アプリの起動時にグローバル ポップアップ ウィンドウにしないでください。実装の入り口はタスクボタンです、トリガーする前に確認してくださいaccuracyAuthorization、完全な精度が欠如している場合は、目的キーを使用して理由を説明します。

  • バックグラウンド測位機能を監査するための精度要件: 機能が領域入口、領域出口、またはビーコンに依存している場合は、それを完全な精度要件として直接マークします。ユーザーの訪問時間または一般的なエリアのみをカウントする場合は、精度を下げたパスを最初に保持します。この監査により、不必要な設定のジャンプを減らすことができます。

  • App Clip と Widget の独立したロケーション パスを設計: App Clip の認証は翌日にクリアされ、ウィジェットは単独で認証をアクティブ化できません。 App Clip は、短期、フォアグラウンド、割り込み可能な位置情報タスクのみを配置します。ウィジェットの場所の説明と認証エントリは親アプリに戻されます。

関連セッション

コメント

GitHub Issues · utterances