WKWebView は、Apple が iOS 8 で導入した、旧式の UIWebView コンポーネントを置き換えるためのブラウザコンポーネントです。マルチプロセスレンダリングを特徴としており、ページのスクロールが画像リソースの読み込みに影響を与えず、クラッシュしてもメインプロセスに影響がなく、メモリ使用量も少なくなります。UIWebView と比較して、WKWebView はパフォーマンス、安定性、ユーザーエクスペリエンスにおいて大幅な改善を実現しています。複数の iOS バージョンにわたる数年間の開発と改良を経て、WKWebView は初期の問題を解決し、現在では安定しています。
iOS 12 のリリース後、Apple の API は UIWebView に対する非推奨の警告を表示し始めました。2019 年 8 月までに、UIWebView コンポーネントを使用したアプリを App Store にレビュー申請すると、警告が表示されるようになりました。この警告では、開発者に対して、できるだけ早く WKWebView に切り替えるよう勧告していました。
2019 年 12 月 23 日、Apple は、2020 年 4 月以降、UIWebView を使用して開発された新規アプリの App Store での受付を停止すると発表しました。また、UIWebView を使用する既存アプリのアップデートも、2020 年 12 月以降は受付を停止すると発表しました。
これに対応するため、mPaaS は UIWebView からの切り替えをサポートするために WKWebView に適応しました。切り替え後の HTML5 ページの安定性を確保するため、適応は 2 つのフェーズで行われます。
フェーズ 1:2019 年 11 月以降、mPaaS ベースラインは UIWebView と WKWebView の両方をサポートします。グレースケールリリースを使用して、段階的に WKWebView に切り替えます。
フェーズ 2:2020 年 3 月以降、mPaaS ベースラインは UIWebView 関連のコードを完全に削除します。すべての H5 サービスが WKWebView に切り替えられます。
mPaaS 10.1.60 ベースラインは、適応の第 1 フェーズを完了しました。mPaaS H5 コンテナーとミニアプリコンポーネントを統合している場合は、できるだけ早く 10.1.60 ベースラインにアップグレードし (ベースラインのアップグレード)、WKWebView に切り替える (WKWebView の使用) 必要があります。
ベースラインのアップグレード
mPaaS H5 コンテナーとミニアプリコンポーネントを統合している場合は、ご利用のアプリケーションのリリース状況に応じて、WKWebView へのアップグレードに適したベースラインを選択してください。
2020 年 4 月より前に App Store に掲載された既存のアプリケーションの場合:WKWebView への切り替え時に既存のサービスの安定性を確保するため、10.1.60 ベースラインにアップグレードしてください。このバージョンは、オンラインでのグレースケールリリースとロールバック機能をサポートしています。アップグレードの詳細については、「10.1.60 正式リリースアップグレードガイド」をご参照ください。
2020 年 4 月より前に App Store に掲載されていない新規アプリケーションの場合:4 月以降、App Store は UIWebView を使用する新規アプリを受け付けません。そのため、UIWebView 関連のコードを完全に削除したバージョン 10.1.68 を使用してください。また、ご利用のサービスに対して徹底的な回帰テストを実施してください。アップグレードの詳細については、「mPaaS 10.1.68-beta アップグレードガイド」をご参照ください。
WKWebView の使用
デフォルトでは、mPaaS コンテナーは UIWebView を使用して HTML5 ページを読み込みます。フレームワークでは、グローバルまたはグレースケールリリースの 2 つの方法で WKWebView を有効にできます。
10.1.60 ベースライン
10.1.60 ベースラインでは、mPaaS コンテナーに UIWebView と WKWebView の両方が含まれています。デフォルトでは、UIWebView を使用して HTML5 ページを読み込みます。グローバル WKWebView スイッチを有効にすると、mPaaS コンテナーによって読み込まれるすべてのページで WKWebView が使用されるようになります。
- (void)application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//...
// グローバル WKWebView スイッチを有効にする
[MPNebulaAdapterInterface shareInstance].nebulaUseWKArbitrary = YES;
//...
}WKWebView を有効にした後、現在の HTML5 ページのユーザーエージェント (UA) を確認します。次の図に示すように、UA に文字列 WK が含まれている場合、ページは正常に WKWebView に切り替わっています。
その他の情報
WKWebView をグローバルに有効にした後、mPaaS フレームワークは、オンラインの HTML5 ページの機能の安定性を確保するための即時修正機能を提供します。この機能により、WKWebView から UIWebView に迅速に切り替えることができます。これを行うには、リアルタイムリリースコンポーネントに 設定スイッチ を追加して、オフラインパッケージまたは URL ディメンションで UIWebView の使用を制限できます。
このスイッチの設定キー (key) は h5_wkArbitrary で、リソース値 (value) は次のとおりです。
{
"enable": true,
"enableSubView": false,
"exception": [
{
"appId": "^(70000000|20000193)$"
},
{
"url": "https://invoice[.]starbucks[.]com[.]cn/"
},
{
"url":"https://front[.]verystar[.]cn/starbucks/alipay-invoice"
}]
}次の表に、値の設定項目を示します。
設定項目 | 説明 | 注意 | |
enable | WKWebView を有効にするかどうかを指定します。 | デフォルト値は | |
enableSubView | ミニアプリに埋め込まれた webView に対して WKWebView を有効にするかどうかを指定します。 | デフォルト値は | |
exception | appId | appID が正規表現に一致するオフラインパッケージ内のすべての HTML5 ページは、WKWebView を使用しません。 | デフォルト値は |
url | URL が正規表現に一致するすべての HTML5 ページは、WKWebView を使用しません。 | ||
10.1.68-beta ベースライン
バージョン 10.1.68-beta では、コンテナーはデフォルトで WKWebView を使用してオフラインパッケージとミニアプリを読み込みます。現在の HTML5 ページの UA を確認します。次の図に示すように、UA に文字列 WK が含まれている場合、ページは正常に WKWebView を使用しています。