ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
Appでのローカルネットワークプライバシーのサポート
ローカルネットワークプライバシーは、Appが個人のホームネットワーク上のデバイスに接続する際の透明性を高めます。AppがBonjourなどのローカルネットワークプロトコルを使用してデバイスとのインタラクションを行う場合は、iOS 14でローカルネットワークプライバシーの許可のサポートを追加する必要があります。新たな許可フローの詳細をご覧になり、指示に従ってAppのアップデートに必要なステップを実行してください。ここではさらに、スムーズなプライバシーエクスペリエンスを作り上げるのに役立ついくつかのベストプラクティスもご紹介します。
リソース
関連ビデオ
WWDC22
WWDC20
-
ダウンロード
こんにちは WWDCへようこそ “Appでのローカルネットワーク プライバシーのサポート” トミー・ポーリーです アプリケーションがローカルネットワークと どのように相互作用するかについて プライバシーに関する 重要な最新情報をお届けします ネットワークはインターネットに 接続するだけのものではありません あなたのiPhoneは ローカルネットワーク上の 他のデバイスと― 直接やりとりすることが よくあります 家の照明をコントロールしたり 仕事で書類を印刷したり 飛行機の中でビデオを見たり 近くにいる友達とゲームをしたり このようなエクスペリエンスを提供する場合は ローカルネットワークを使用します Appleデバイスでは ローカルネットワークを 利用するには“Bonjour”が最適です Bonjourでは アプリケーションが 近くのサービスを検出したり 独自のサービスを宣伝したり することができます Bonjourは 動画やオーディオの ストリーミングや― ピアツーピアゲームのプレイ プリンターやカメラ ホームデバイスとのコミュニケーションの 基盤となっています また 一部のアプリケーションは より低いレベルで ローカルネットワークと相互作用します アプリケーションは Wi-Fiルーターを設定したり カスタムマルチキャストや ブロードキャストプロトコルを使用して レガシーハードウェアと 通信したりすることができます アプリケーションにとって ローカルネットワークへのアクセスは 強力なツールです そして この大きな力には 同時に大きな責任が伴います それは ユーザーのプライバシーを 尊重することです アプリケーションがローカルネットワークに アクセスするタイミングを― ユーザーは知っておく必要があります 開発者であるあなたは アプリケーションで 使用されるフレームワークが ネットワークにアクセスする時にも 注意する必要があります プライバシーとネットワークアクセスが どのように交差するかを探ってみましょう 位置情報は― アプリケーションがアクセスできる中で 最もプライバシーの影響を受ける 情報の1つです iOS 13からは ネットワークの名前とBSSIDを読み取るために 位置情報の許可が必要になりました しかし 単にローカルネットワークにアクセス するだけでも 位置情報のヒントになります 例えば 誰かが ホームネットワーク上にいる場合 その人の周りにあるデバイスや サービスのセットは一意です 2つのホームネットワークが 全く同じに見えることはありません そして ネットワーク上の デバイスに関するこの情報は アプリケーションによって 位置情報のフィンガープリントを― 作成するために使用することができます アプリケーションは 周囲のデバイスを 制御するための許可も必要とします Bluetoothで通信することで アプリケーションが 機密情報にアクセスできるようになります しかし ローカルネットワークにアクセスすると 似たような情報がたくさん出てきます 例えば 多くのデバイスは― ローカルWi-Fiを介し アプリケーションで 設定・管理することができます しかし 他のどんなアプリケーションでも そのデバイスと通信を試みることができます アプリケーションが カメラを管理している場合は 写真を同期するためのアクセス権を 持っているはずですが 他のアプリケーションは おそらく そうではないでしょう そのため iOS 14では ユーザーが どのアプリケーションに アクセスを許可し ローカルネットワークと やりとりするかを コントロールできるようになりました これは ユーザーに より多くの透明性を提供し アプリケーション内で実行されているコードが ネットワークにアクセスする方法を― 見直す絶好の機会となります “制限なし” “許可が必要” 広いインターネット上のリソースに アクセスするだけなら 他のことをする必要はありません また AirPrint AirPlay AirDrop HomeKitなどの システムサービスを使用して ローカルネットワークとのみ やりとりする場合は アップデートする必要はありません これらは デバイスの完全なリストを アプリケーションに公開することなく デバイスの検出を処理します 一方で アプリケーションが― アプリケーション内で直接 ローカルネットワークにアクセスする場合 ユニキャストプロトコル または マルチキャストプロトコルのいずれかを使用して アプリケーションの許可を要求します また iOS 14用にアプリケーションを いくつか 簡単なアップデートをする必要があります これについて詳しく説明するために ローカルネットワークにアクセスするための 許可をどのように取得するか
iOS 14用に アプリケーションを アップデートする方法 そしてユーザーが アプリケーションの 機能を使用する時に すばらしいエクスペリエンスを 保証する方法を見てみましょう まずは許可について 見てゆきましょう アプリケーションが― ローカルネットワークとの やりとりをしようとすると 最初にプロンプトが 表示されるようになりました 許可が付与されるまでは― すべてのローカルネットワーク通信が ブロックされます プロンプトには アプリケーションの Info.plistで指定した― 使用方法の説明が含まれています iOS 14にアップデートしていない アプリケーションは デフォルトの理由が記載された テキストが表示されます アプリケーションを待ち設けていない プロンプトが表示された場合は ローカルネットワークにアクセスする サードパーティの― フレームワークを 使用している可能性があります アプリケーションに付与された許可は 使用するフレームワークにも 適用されることを 覚えておいてください “ローカルネットワーク” アプリケーションの許可は ローカルネットワークの設定の プライバシーパネルで いつでも 確認・変更できます
ローカルネットワークへのアクセスを要求した アプリケーションは すべてここに表示されます このトグルは 特定のアプリケーションの 設定にも表示されます iOS 14にアップデートすると アプリケーションが プライバシーの 許可を使用して動作するように いくつかの変更を行う必要があります “アプリケーションの要件 INFO.PLISTのキー” アプリケーションのInfo.plistで提供できる 2つの新しいキーがあります 第一に アプリケーションが― ローカルネットワークに アクセスすることがある場合は 使用方法を説明する必要があります これは アプリケーション内の どの機能が― ローカルネットワークを必要とするかです 第二に アプリケーションがBonjourを使用して 閲覧や広告を行う場合は 使用するサービスタイプのリストを 提供する必要があります 各サービスタイプは アプリケーションプロトコルを識別するために IANAに登録された一意の文字列です ここでは サービスタイプは tictactoe.tcpです アプリケーションが Bonjourを 使用できるようにするAPIにはいくつかあります “Bonjourを使用したフレームワーク” これらのAPIを使用する場合は Info.plist を更新して Bonjourサービスタイプを 列挙するようにしてください
Bonjourなしで ローカルマルチキャストの検出を行う アプリケーションや ネットワーク上の― Bonjourサービスタイプすべての列挙が必要な アプリケーションは少数です これらの操作には iOS 14の エンタイトルメントが必要です このエンタイトルメントは 開発者ポータルから要求することができます それでは アプリケーションの 更新プロセスについて説明します
これは 私が元々iOS 13用に作った― 周りの人と一緒に“三目並べ”を遊べる アプリケーションです 私がやることは iOS 14 SDKに対して アプリケーションを再実行して 確認することだけです
大丈夫です 近くに誰もいませんね
これは 意外なことです 私が望んでいる動きではありません デバッグ出力を見てみると NoAuthのブラウザオブジェクトから 取得している― エラーがあることに気づくでしょう
これは ローカルネットワークアクセスの プロンプトがなく アプリケーションがブロック されていることを意味します このNoAuthエラーが表示された場合は Info.plistにBonjourの サービスと使用方法の説明を 追加する必要があることを 意味します 今のうちにやっておきましょう プロジェクトの設定にアクセスして 情報を見てみましょう ここで 2つの新しいフィールドを 追加する必要があります 1つ目は ローカルネットワークアクセスの― 使用方法の説明のための プライバシーフィールドです
できました そこでここには― “三目並べはローカルネットワークを使用し 周りのプレイヤーを検出します” というようなことを 書いてみましょう これは理にかなっていますね あとは Bonjourのサービスタイプを 追加する必要があります
これはBonjourサービスとして 追加することができます そしてこれは 自動的に 文字列の配列であることを認識します
このアプリケーションは 1つのタイプしか使用しておらず そのタイプはtictactoe.tcpです では 今すぐアプリケーションを 再コンパイルして確認しましょう
大丈夫ですね すぐに 三目並べがローカルネットワーク上の 私のデバイスを見つけて 接続したいというプロンプトを アプリケーション内で取得したことがわかります また Info.plistで設定した― カスタマイズした使用方法の 文字列も確認できます “OK”をクリックすると アプリケーションが 実際にBonjourで閲覧しています すばらしいですね しかし アプリケーションを起動した瞬間に このようなことが起こることを ユーザーは 少し不快に感じるかもしれません
代わりに ユーザーが 実際にアクションを行った時に プロンプトのみを表示し 閲覧だけを試みる 別のバージョンの アプリケーションも作成しました それでは スマートフォンで 見てみましょう
これが別バージョンの アプリケーションです アプリケーションを起動しても プロンプトが出ませんでしたね その代わり“Search for games”を クリックして 他のプレイヤーの検出を開始すると プロンプトが表示されます このエクスペリエンスのほうが はるかに良いので これにしましょう
このように プライバシーの許可を得て ローカルネットワークへの― アクセスをゲーティングすると アプリケーションの使用エクスペリエンスが 変わるかもしれません アプリケーションをアップデートする際に 考慮すべきベストプラクティスを いくつか紹介しましょう “予期しないプロンプトを避ける” まず― アプリケーションがプロンプトを起動した時に ユーザーが混乱しないようにします アプリケーションの起動時に ネットワークを閲覧するのではなく 閲覧を必要とするアクションを待機します これが アプリケーションが ローカルネットワークへの― アクセスを許可される機会です 正しい瞬間を選択することで ユーザーがアクセスを許可する可能性が 高くなります
アプリケーションが プロンプトを起動する場合は どの機能が有効になっているかを正確に示す 明確な使用方法の説明が 提供されていることを確認してください また アプリケーションでは これまで処理していなかったエラーや API動作が発生することがあります “エラーに寛大に対処する” Bonjour APIは 結果を非同期で配信します アプリケーションが 許可を待っている間は 近くにデバイスがないように見えます NWConnectionを使用するローカル接続は アプリケーションが許可を得るまで 待機状態になります 同様に URLSessionタスクが ローカルネットワークを使用する場合は 必ずwaitsForConnectivityプロパティを 設定してください そうすることで 許可が一度下りれば タスクが完了します また まだソケットを 直接使用している場合は アプリケーションが許可を持っていない場合の システムコールエラーを処理する必要があります 最後に アプリケーションは― 可能な限り ローカルネットワークのために システムが提供するエクスペリエンスを 使用することを優先すべきです
AirPrint AirPlay AirDrop または HomeKitを使用している場合 アプリケーションが 特別な処理をする必要はなくても 強力なプライバシー保証が提供されます アプリケーションでやるべきことを まとめてみましょう まず iOS 14 SDKを使用して アプリケーションを再構築し ローカルネットワークを 使用する方法をテストします 次に アプリケーションが ローカルネットワークを使用する場合は Info.plistに使用方法を 明確に記述してください 最後に アプリケーションが Bonjourを使用する場合は Info.plistで サービスタイプを 宣言してください
ご視聴 ありがとうございました
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。