すべてのプロダクト
Search
ドキュメントセンター

Mobile Platform as a Service:WKWebview への対応

最終更新日:Jan 17, 2025

WKWebView は、Apple が iOS 8 で導入した新世代の組み込みブラウザコンポーネントです。これは、古い UIWebView コンポーネントを置き換えるように設計されています。このコンポーネントは、画像リソースの読み込みに影響を与えないページスクロール、メインプロセスに影響を与えないクラッシュ保護、メモリ使用量の削減など、マルチプロセスレンダリングを特長としています。 UIWebView と比較して、WKWebView はパフォーマンス、安定性、およびユーザーエクスペリエンスが大幅に向上しています。数年間の反復 ( iOS 8 から iOS 9 、iOS 10 、iOS 11 、および iOS 12 ) の後、WKWebView はリリースの初期段階で発生したすべての問題を徐々に解決し、安定性を向上させてきました。

iOS 12 のリリース後、Apple API はユーザーに UIWebView API を徐々に破棄するように促し始めました。 2019 年 8 月以降、開発者が UIWebView コンポーネントを含むアプリを App Store に承認のために提出すると、次の警告が表示され、すぐに WKWebView に切り替えるように促されます。

さらに、Apple は 2019 年 12 月 23 日に、App Store は 2020 年 4 月以降 UIWebView を使用して開発された新しいアプリを受け入れなくなり、2020 年 12 月以降 UIWebview を使用して開発された既存のアプリのアップデートを受け入れなくなると発表しました。

この状況に対応して、mPaaS は WKWebView に対応しており、UIWebView から WKWebView への切り替えをサポートしています。 UIWebView から WKWebView への切り替え後も HTML5 ページの安定性を確保するために、mPaaS の WKWebView への対応プロセスは次の 2 つの段階に分かれています。

  • ステージ 1:2019 年 11 月以降、mPaaS ベースラインは UIWebView と WKWebView の共存をサポートし、カナリアデプロイ機能を通じて徐々に WKWebView に切り替えます。

  • ステージ 2:2020 年 3 月以降、mPaaS ベースラインは UIWebView 関連のコードをすべて削除し、すべての HTML5 サービスは WKWebView に切り替えられます。

mPaaS 10.1.60 ベースラインは、ステージ 1 の適応を完了しています。 mPaaS HTML5 コンテナとミニプログラムコンポーネントを統合するユーザーは、次の手順 (ベースラインのアップグレード) に従って、できるだけ早く最新の 10.1.60 ベースラインにアップグレードし、WKWebView に切り替える (WKWebView の使用) 必要があります。

ベースラインのアップグレード

アプリのリリース状況に基づいて、mPaaS HTML5 コンテナとミニプログラムコンポーネントを統合するユーザーは、次の原則に基づいてアクションを実行し、WKWebView に対応するためにベースラインをアップグレードする必要があります。

  • 2020 年 4 月より前に App Store でリリースされたアプリの場合:既存のサービスを WKWebView に切り替える際の安定性を確保するために、10.1.60 ベースラインにアップグレードして、オンラインカナリアデプロイとロールバックをサポートすることをお勧めします。アップグレード手順については、「バージョン 10.1.60 へのアップグレード手順」をご参照ください。

  • 2020 年 4 月より前に App Store でまだリリースされていない新しいアプリの場合:App Store は 4 月以降 UIWebView を使用した新しいアプリを受け入れなくなるため、UIWebView 関連のコードを含まないバージョン 10.1.68 を使用し、サービスの回帰テストと検証に備える必要があります。アップグレード手順については、「mPaaS 10.1.68-Beta へのアップグレード手順」をご参照ください。

WKWebView の使用

mPaaS コンテナーは、デフォルトで UIWebView を使用して HTML5 ページを読み込みます。 mPaaS フレームワークは、グローバルな有効化カナリアデプロイメントの有効化の 2 つの WKWebView 有効化メソッドをサポートしています。

10.1.60 ベースライン

10.1.60 ベースラインでは、UIWebView と WKWebView が mPaaS コンテナに共存し、デフォルトでは UIWebView を使用して HTML5 ページが読み込まれます。次の方法で WKWebView をグローバルに有効化すると、mPaaS コンテナによって読み込まれるすべてのページで WKWebView が使用されるようになります。

- (void)application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{
   //...
   // グローバルに WKWebView を有効にする
   [MPNebulaAdapterInterface shareInstance].nebulaUseWKArbitrary = YES;
    //...
}

WKWebView を有効にした後、現在の HTML5 ページの UA を表示できます。 UA に次の図に示す WK 文字列が含まれている場合、このページは WKWebView を使用するように正常に切り替えられています。142686-1

その他の説明

WKWebView がグローバルに有効化された後、オンライン HTML5 ページの機能安定性を確保するために、mPaaS フレームワークは、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 を有効にするかどうか。有効にする場合は true 、無効にする場合は false

デフォルトは false です。

enableSubView

ミニプログラムに埋め込まれた webView で WKWebView を有効にするかどうか。有効にする場合は true 、無効にする場合は false

デフォルトは false です。

exception

appId

オフラインパッケージの appId 正規表現に一致するすべての HTML5 ページで WKWebView は使用されません。

デフォルトは nil です。このフィールドは、enabletrue に設定されている場合にのみ有効です。

url

url 正規表現に一致するすべての HTML5 ページで WKWebView は使用されません。

10.1.68-beta ベースライン

バージョン 10.1.68-beta のコンテナは、デフォルトで WKWebView を使用してオフラインパッケージとミニプログラムを読み込みます。現在の HTML5 ページの UA を表示できます。 UA に次の図に示す WK 文字列が含まれている場合、現在のページは WKWebView を使用するように正常に切り替えられています。142686-2