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
— 画像の保存はNSPhotoLibraryAddUsageDescription
のみを指定する。 WKWebViewはユーザーにフォトライブラリ全体のアクセスを求める必要なく、画像やファイルのアップロードが可能である。アプリが個別の画像にアクセスするには、UIImagePickerController
の代わりに、NSPhotoLibraryUsageDescription
が不要なPHPickerViewController
を使うべきである。 -
NSLocationAlwaysUsageDescription
,NSLocationAlwaysAndWhenInUseUsageDescription
— これらの代わりにNSLocationWhenInUseUsageDescription
を使う。ブラウザアプリの位置情報アクセスを"常に許可"にすることは制限されている。(NSLocationAlwaysUsageDescription
はiOS 10で非推奨となった。) -
NSHomeKitUsageDescription
— ブラウザアプリはユーザーのHomeKitデータベースにアクセスすることはできない。 -
NSBluetoothAlwaysUsageDescription
— ブラウザアプリはバックグラウンドで、Bluetoothデバイスへのポーリングをすることはできない。Bluetooth機能にはNSBluetoothWhileInUseUsageDescription
を使うべきである。 -
NSHealthShareUsageDescription
,NSHealthUpdateUsageDescription
— ブラウザアプリはユーザーのHealthKitデータベースにアクセスすることはできない。
PR: iOS 14向けに個人開発のWebブラウザアプリ(6年目)を標準Webブラウザにできるよう、がんばっています!