iOS

UIWebViewからWKWebViewへの移行

投稿日:

はじめに

UIWebViewを使用してアプリのアップデートができる期限が2020年の12月までと正式に期限が通知されましたね。

ITMS-90809: Deprecated API Usage – App updates that use UIWebView will no longer be accepted as of December 2020. Instead, use WKWebView for improved security and reliability. Learn more (https://developer.apple.com/documentation/uikit/uiwebview).

After you’ve corrected the issues, you can upload a new binary to App Store Connect.

そこで、今回はUIWebViewからWKWebViewへの移行を行なっていきたいと思います。

ターゲットとなるUIWebViewで行なっていること

今回は以下の機能を実装しているUIWebVIewをターゲットにし、これらの機能をWKWebViewに移行していきます。

  1. URLへのアクセス
  2. ローカルHTMLの読み込み
  3. ページを戻す、進める
  4. ページの読み込み開始時や終了時に処理を行う(delegate)
  5. JavaScriptの実行
  6. Cookieの付与

URLへのアクセス

まずは基本中の基本、URLへのアクセスの方法から、UIWebViewの場合は loadRequest 関数を使用します。

これをWKWebViewに置き換えるとこうなります。

引数が URLRequest  なのは変わらずで、 load 関数を使用します。

ローカルHTMLの読み込み

UIWebViewでローカルHTMLを読み込む場合は loadHTMLString 関数を使用します。

WKWebViewでも変わらず loadHTMLString 関数を使用します。

両者の違いとしてWKWebViewは戻り値として WKNavigation が返却されます。

ページを戻す、進める

UIWebViewでページを戻したり進めたりする場合は下記のように、履歴があるかの確認を行なってから goBack や goForward 関数を実行します。

この関数に関してはWKWebViewも全く同じ名前のメソッドを使用します。

ページの読み込み開始時や終了時に処理を行う(delegate)

ページの読み込み開始時や終了時に処理を行うには delegate を使用して処理を行います。UIWebViewは UIWebViewDelegate を使います。

WKWebViewの場合は、 WKNavigationDelegate を使います。

WKNavigationDelegate プロトコルの方が少し細かい単位になっていて、ページの読み込み処理を開始と内容受信が分かれています。例えば、接続出来ないURLが指定されたときに、 webView(_: didStartProvisionalNavigation:) メソッドは呼ばれますが、 webView(_: didCommit:) は呼ばれないという動作になります。

JavaScriptの実行

JavaScriptの実行方法も移行が必要です、UIWebViewは stringByEvaluatingJavaScript 関数を使用しています。

それに対し、WKWebViewでは evaluateJavaScript 関数を使用します。

UIWebViewは同期処理になっていて、JavaScriptの実行が完了してからアプリに制御が戻ります。
WKWebViewの方は非同期処理になっていて、JavaScriptの実行が完了すると、指定したブロックが実行されます。

Cookieの付与

UIWebViewでは HTTPCookieStorage を参照しているので Cookie を設定したい場合は以下のようにします。

WKWebViewの場合は以下のように設定します。

さいごに

新規でアプリを作成されている方はWKWebViewだと思いますが、UIWebViewを使用されている方も結構いるのではないかと思います。まだ12月まで余裕はありますが間際になって慌てないように余裕を持って移行していきたいですね。

おすすめ書籍

[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus 詳解 Swift 第4版 [改訂新版]Swiftポケットリファレンス (POCKET REFERENCE)

page_footer_responsive




-iOS
-,

執筆者:

         

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

no image

iOSでFirebase Authenticationを実装してみる その2

1 はじめに2 匿名アカウントから永久アカウントに変換3 サインアウト4 アカウントの削除5 パスワードの再設定メール配信6 さいごに7 おすすめ書籍 はじめに こんにちは、Yossyです。 前回は、 ...

[Swift]MapViewでクラスタ機能を利用する。

1 はじめに2 クラスタリングとは3 PINのクラスタリング機能を利用する3.1 マップの作成3.2 PINの作成3.3 Pinのカスタマイズ3.4 カスタムしたPinの利用3.5 CustomPin ...

[Swift]アプリのフォアグラウンドに特定の処理を行う。

1 はじめに2 今回の目標3 画面構成4 通知の設定4.1 通知の送信4.2 通知の受信と削除-BaseController5 それぞれの画面の設定5.1 初期画面(FirstViewControll ...

【Swift】Xcode12対応ではまったNavigationControllerの挙動変更

1 はじめに2 今回のバグ3 詳細な内容4 修正5 さいごに6 おすすめ書籍 はじめに こんにちはsuzukiです。皆さんXcode12対応はおすみでしょうか、今回も駆け込みで色々対応しております。そ ...

swift

UITableViewでTableViewCell(Xib)を使ってみた

1 はじめに1.1 前提条件1.2 事前準備2 TableViewを準備3 Xibを準備4 tableviewに表示するcellにxibを指定する5 さいごに はじめに どうも、はじめです。 今回はX ...

フォロー

follow us in feedly

blog-page_side_responsive

2020年5月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。