ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
Locationボタンについて
CLLocationButtonについて: セキュアなインターフェイス要素であり、Appにおける位置情報へのアクセスを、必要な時と場所に限定して許可するための簡単かつ抵抗の少ない方法を提供します。CLLocationButtonを新規または既存のコードに追加する方法、インターフェイスの視認性のガイドラインに従ってカスタマイズする方法、カスタマイズに関する問題を把握して処理する方法を紹介します。また、iOSの従来のプロンプト方式の位置情報サービス認証とCLLocationButtonの連係についても説明します。 このセッションを最大限活かしていただくためには、Core Location APIの基礎を理解していることが推奨されます。
リソース
- Core Location
- CoreLocationUI
- Human Interface Guidelines: Accessing User Data
- Requesting authorization to use location services
- Sharing Your Location to Find a Park
関連ビデオ
WWDC21
WWDC20
-
ダウンロード
こんにちは Cindy Clarissaです Core Locationのエンジニアです 今日はCore Locationの 今年の新しいクールな機能を紹介します 新機能が2つあり App内の位置情報に基づく機能を 何度もユーザーに承認を求めずに 使えるようにするものです
まず1つ目の機能です watchOS 8では 地域ベースの通知ができます Apple Watch Appから リマインドできます ジムに着いたら 運動を始めよう 家に着いたら 犬に餌をあげようなど たとえば この機能により App in the Airは 空港到着時に フライト情報を通知します 地域ベースのユーザー通知で システムがAppに代わり 場所に適切な情報を 「常に許可」の承認が なくても届けられます watchOSでの 地域ベース通知の 使い方の詳細については watchOSの新機能セッションをご覧ください では このセッションの主題です 位置情報を要求する 新たな方法について ユーザーがデータを より管理しやすいようにし 同時にAppにも より多くの機能性を与えます まず現在の 位置情報承認の状況と この新機能の目的をお話しします iOS 14では Appが位置情報の承認を求めると プロンプトが表示され ”1度だけ”か ”Appの使用中のみ許可” または ”許可しない”が選べます 昨年の新機能で Appに渡す位置情報の細かさも 選べるようになりました お気づきかもしれませんが ユーザーが ”1度だけ”を選択した場合 Appを使う上で ”Appの使用中”の許可が 必要かもしれない ことに気づかない可能性もあります たとえば ペット店Appが ユーザーの近隣店舗を 判断するには 位置情報が必要ですが キャットフードを 選ぶだけなら 位置情報は不要です この場合 Appのユーザーは ”1度だけ許可”か― ”許可しない”を 選択しそうです ”1度だけ”が選ばれると― 位置情報の承認は ユーザーがAppを 使っている間続きます でもAppが バックグラウンドに入ると 承認を失います その結果 何度も位置情報の 承認リクエストが生じ ユーザー体験が 損なわれかねないのです 別の例では プロンプトにうんざりして― ”許可しない”を選択し プロンプトを表示させない人もいます すると 後で位置情報の承認のために 設定を開くよう促すことになります プライバシーを重視するAppleでは ユーザー体験を損ねずに ユーザーによるコントロールを 提供する方法を検討しました 簡単で使いやすく 必要な時だけ利用できる 位置情報の承認方法はないか? iOS 15では CLLocationButton for UIKitと LocationButton for SwiftUIを追加し その課題に対処します Park Finderは 近隣の公園を探すAppです 画面下の 青い位置情報ボタンの タイトルは”現在地”で 隣に矢印があります ボタンを押すと Park Finderは位置情報を取得し 近隣の公園を地図上に表示します 左上の矢印が 青になってユーザーの注意を引き ユーザーが承認したことを 認識させます 注意点は 位置情報ボタンが Appに対し ”1度だけ許可”を 与えていることです 毎回プロンプトを 表示する必要がありません 後ほど 既存の承認状況への 影響を説明します 位置情報ボタンが入るのは watchOSとiOS そして macOS Catalyst MacのiPadAppです ではAPIの話と Appに CLLocationButtonを 導入する方法について このボタンはCoreLocationUI フレームワークの一部です UIButtonと同様 CLLocationButtonは UIControls由来です なのでこのボタンでは UIControl機能が使えます さらに このボタンに関連する 4つのプロパティがあります CLLocationButtonIconで 矢印の種類を CLLocationLabelで ボタンのラベルを cornerRadiusで ボタンの丸みを そして fontSizeで ラベルサイズを設定します ざっと紹介しましたが ここで知りたいのは CLLocationButtonでの 位置情報取得方法ですね やり方はUIButtonでの 位置情報のリクエストと似ています 事例の方が わかりやすいですね これからデモでお見せします UIButtonに代わり CLLocationButtonを使う方法を このUIButtonの例では 位置情報をリクエストする シンプルなボタンを作ります タップすると Appの使用中は許可 の承認をリクエストします まずUIButtonのインスタンスを作り タイトルを"現在地"とします 機能を呼び出すターゲット アクションを追加し ボタンがタップされるたび アクションを実行します ここでは近隣の公園全てを 表示させたいです なのでこの機能は ”showNearByParks”とします
showNearByParks機能では locationManagerを使い requestWhenInUseAuthorizationと startUpdatingLocationを呼びます この機能の中には ロジックを追加し 適切な地図ビューを 表示させたいですが でもシンプルにするため ここでは削除します では UIButtonを置き換えるため 最初の2行を削除し CLLocationButtonのインスタンスに 置き換えます 次にラベルを ”.currentLocation”とします 最後に requestWhenInUseAuthorizationを コメントアウトします これは位置情報ボタンで ボタンがタップされれば ”1度だけ”承認の 代替になるからです 既存のUIButtonなら その置き換えは この例の通り簡単です さらに簡単にしたいので Park Finder Appの例を このセッションに添付しました SwiftUI Appを使う人には 位置情報ボタンは SwiftUIにもあります この例のように LocationButtonを使えます 補足すると ここでは SwiftUIの”symbolVariant”で 矢印の種類を設定し ”tint”で ボタンの背景色を設定します
では事例で 位置情報ボタンの カスタマイズを見てみます 位置情報ボタンでは 背景色や テキストやグリフの色 角の丸みなどを カスタマイズできます これらはカスタマイズの ボタンの例です では順を追って 位置情報ボタンの カスタマイズを見てみます デフォルトボタンから始めましょう デフォルトでは”現在地”のタイトルは 白い字で 背景色はsystemBlue
アイコンはarrowFilledにできます
次に アイコンの前面色を変えるには tintColorを白から黒にし backgroundColorを白にします 最後に角の半径を 25.0に設定し 丸みを付けます
制約の設定と ボタンのサイズ設定により ボタンの幅が高さと同じで 角の半径を幅の半分に設定すれば 完全な円ができます これでデフォルトボタンを 白い丸ボタンへと 簡単に変えられました スタイル上の変更を 位置情報ボタンでできました ボタンをカスタマイズし Appの外観に合わせられます ただし これには責任が伴います 位置情報ボタンを カスタマイズするとき いくつか制約があり ボタンをはっきり明確に 見やすくする必要があります いくつか例をあげて ボタンのデザインが不適切だったり 位置情報を受け取れないといった ケースを見ていきます その場合 ターゲットアクションを呼んでも 承認は得られません でも大丈夫です ログメッセージのフィードバックで どの制約に抵触したか わかるようにしています たとえば ここにいくつかログがあり ボタンのサイズや アルファ値の不備や 色コントラストの問題など を指摘しています 次の例は XcodeのInterface Builderを 使った場合のフィードバックです 先ほど作ったボタンを使います このボタンで色を変えて tintColorを白にすると 文字が見えません 背景がすでに白だからです なのでこれだと 問題がナビゲーションペインの XcodeのIssueタブに表示されます では元のボタンに戻り 透明度またはアルファを 変えてみましょう これで見えるかもしれませんが ちょっと透明すぎますね アクセシビリティガイドラインに反します Xcodeでも同様のメッセージが出て アルファ値を増すよう推奨されます もう1つありうる問題は ボタンサイズの不備です ボタンのコンテンツが ボタンサイズに対し 小さすぎたり大きすぎたりします ユーザーの言語設定により テキストの長さは変わります 言語を変えて テキストの長さを変えてみます
Appの実装が 自動レイアウト フレンドリーか否かで 言語を変えた際 テキストがボタンより 大きくなることがあります このようにドイツ語のテキストが 収まっていません こういう場合 ログのフィードバックを見てください 位置情報ボタンのテストでは テキストのサイズを 大小に変えたり 異なる言語に変更したりして 確認してください どんなケースでも ボタンが機能するように ボタンのカスタマイズでは はっきり見やすいことが 非常に大事です 正しく描かれていない または位置情報を 受け取れない時 ボタンが明確でない場合があります その場合 ログメッセージを出して 間違った部分が わかるようにしています 位置ボタンの実装方法を 説明してきましたが 既存の承認ステータスへの 影響はどうでしょうか 先ほど言った通り 位置情報ボタンとは “1度だけ許可”の承認です Appにいずれかの承認ステータスが ない場合 "NotDetermined"になり プライバシー設定では ”共有する時”になります Appがこの状態だと ユーザーが最初に 位置情報ボタンを押すとき プロンプトが出て 同意するか確認します でも すでに位置情報を 承認されたAppでは ”このAppの使用中のみ許可”なら 位置情報ボタンにより 承認ステータスは変わらず 他のUIButtonと同様に動きます 使えるところでは 位置情報ボタンは 便利だし安心でもあります 位置情報を共有する場面や その可否をユーザーが 決められるからです 位置情報ボタンは より安心なので ユーザーは位置情報を以前よりも 共有する可能性が高いと考えます ユーザーにもAppにも 環境を整える機会としたいです あるAppで位置情報を ”許可しない”に した人も 位置情報ボタンを押せば ボタンの説明を見て Appの設定を NotDeterminedに戻す機会となり その後も位置情報ボタンを使えます このセッションでは watchOS Appでより動的な 地域ベース通知が できることをお話しました 詳細については セッションのリソースを 見てください これまで 位置情報を 得るための新機能について お話ししました Appleでは プライバシーに関する より多くのコントロールを ユーザーに提供することを重視します 人々はますます データ共有のあり方に敏感です Appの設計にあたり ユーザー体験の向上とともに ユーザーからの信頼を得るために 自問してみましょう ”このAppは 従来の承認が必要か” ”それとも 位置情報ボタンで” ”ワンタイムの承認が 適しているか?” 1度きりでいいことも ときにはあるでしょう 位置情報ボタンで 情報共有のコントロールを さらに提供することで ユーザーの信頼が得られます ありがとうございます [音楽]
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。