[翻訳] iOS 14 標準Webブラウザ対応


[Preparing Your App to be the Default Browser or Email Client](https://developer.apple.com/documentation/xcode/allowing_apps_and_websites_to_link_to_your_content/preparing_your_app_to_be_the_default_browser_or_email_client) から標準Webブラウザ対応の部分を訳しました。
(2020/08/05 時点のものです)

訳や解釈に問題があったら教えて下さい。

----

## アプリを標準Webブラウザにする設定

iOS 14以降、アプリを標準Webブラウザとして機能させるには`com.apple.developer.web-browser` managed entitlementが必要になる。これはAppleにメール( _default-browser-requests@apple.com_ )を送り、許可を得ることで使えるようになる。


### 必ず満たさなければならない要件

* `HTTP`と`HTTPS`のschemeをInfo.plistファイルに記述する。
* `UIWebView`の使用はできない。
* アプリ起動時にURLを入力するためのテキストフィールド、インターネット上の関連リンクを見つけるための検索ツール、もしくはキュレートされたブックマークリストを提供する。

### HTTPやHTTPSリンクを開くとき

* アプリは指定されたWebページを必ず直接開き、期待されたWebコンテンツを表示する。予期せぬ場所へリダイレクトしたり、本来のソースコードに指定されていないコンテンツを表示するアプリは、標準Webブラウザの要件を満たしていない。
* パレンタルコントロールやロックダウンモードのあるアプリは、その目的を遵守するために開くWebページを制限してもよい。
* フィッシングや、その他の問題が疑われるコンテンツに対して、セーフブラウジングや他の警告を表示してもよい。
* Webサイトに固有のログイン方法があったとしても、アプリ固有の認証UIを表示してもよい。

補足
ロックダウンモードは、ある目的を実行するために1つもしくは複数のWebサイトのみアクセスを許可するもの。テストやクイズなどで使われる。
セーフブラウジングは、リンクを開く前に、Google Safe BrowsingやTencent Safe Browsingなどのサービスで危険性がないかを調べて、問題があった場合に警告を表示するもの。

## 標準ブラウザの機能

`com.apple.developer.web-browser` managed entitlement を使うアプリは以下のことが可能になる。

* 標準Webブラウザとしてユーザーが選べる。
* すべてのドメインからページを読み込め、フルスクリプトアクセスができる。
* WKWebViewでService Workersが使える。


## ブラウザの制限の遵守
`com.apple.developer.web-browser` managed entitlementを持つアプリは、特定のドメインに対して、そのアプリのUniversal Linksであると主張して反応してはいけない。システムはそのような主張を無視する。Universal Linksとして他のアプリを開くことは通常通り可能である。

ブラウザアプリはユーザーのWebブラウジングとして特権的な位置にあるため、個人データへの不必要なアクセスを避ける必要がある。`com.apple.developer.web-browser` managed entitlementを持つアプリで、Info.plistファイルに以下のキーを使っている場合は審査でリジェクトされる。

* [`NSPhotoLibraryUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsphotolibraryusagedescription) — 画像の保存は[`NSPhotoLibraryAddUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsphotolibraryaddusagedescription)のみを指定する。 WKWebViewはユーザーにフォトライブラリ全体のアクセスを求める必要なく、画像やファイルのアップロードが可能である。アプリが個別の画像にアクセスするには、[`UIImagePickerController`](https://developer.apple.com/documentation/uikit/uiimagepickercontroller)の代わりに、[`NSPhotoLibraryUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsphotolibraryusagedescription)が不要な[`PHPickerViewController`](https://developer.apple.com/documentation/photokit/phpickerviewcontroller)を使うべきである。

* [`NSLocationAlwaysUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nslocationalwaysusagedescription), [`NSLocationAlwaysAndWhenInUseUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nslocationalwaysandwheninuseusagedescription) — これらの代わりに[`NSLocationWhenInUseUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nslocationwheninuseusagedescription)を使う。ブラウザアプリの位置情報アクセスを"常に許可"にすることは制限されている。([`NSLocationAlwaysUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nslocationalwaysusagedescription)はiOS 10で非推奨となった。)

* [`NSHomeKitUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nshomekitusagedescription) — ブラウザアプリはユーザーのHomeKitデータベースにアクセスすることはできない。

* [`NSBluetoothAlwaysUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nsbluetoothalwaysusagedescription) — ブラウザアプリはバックグラウンドで、Bluetoothデバイスへのポーリングをすることはできない。Bluetooth機能には`NSBluetoothWhileInUseUsageDescription`を使うべきである。

* [`NSHealthShareUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nshealthshareusagedescription), [`NSHealthUpdateUsageDescription`](https://developer.apple.com/documentation/bundleresources/information_property_list/nshealthupdateusagedescription) — ブラウザアプリはユーザーのHealthKitデータベースにアクセスすることはできない。


----
PR: iOS 14向けに[個人開発のWebブラウザアプリ(6年目)](https://apps.apple.com/jp/app/ohajiki-d-web-browser/id1039646068?mt=8)を標準Webブラウザにできるよう、がんばっています！