- 更新日: 2016年1月22日
- Swift & iOS
WKWebView/UIWebViewでウェブページが真っ白
iOS9 から WKWebView/UIWebView でウェブページがロードされず、画面が真っ白になるという現象が起こりました。iOS 8 までは正常に動いていたのですけど。
これは、iOS 9 から導入された App Transport Security(ATS)という機能が原因だそうです。App Transport Security(ATS)有効時には、ATS のデフォルト設定では HTTP によるネットワーク通信が許可されず、HTTPS(SSL)による通信のみ許可されるらしい。App Transport Security(ATS)については、以下のページが詳しい。
[iOS 9] iOS 9 で追加された App Transport Security の概要 | Developers.IO
— 環境 —
iOS 9 以降
Info.plist に ATS 設定を追加する
とりあえず、いったん App Transport Security(ATS)を無効にするために、Info.plist に次のコードを追加しました。
1 2 3 4 5 |
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> |
ファイル全体としては、最後のところに追加して以下のように編集した。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>en</string> ... <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> </dict> </plist> |
一応これで無事に WebView でウェブページが表示されるようになりました。ただし、この方法はセキュリティ的には非推奨っぽい。
ATS 対象から除外するドメインを指定
次の例のように、いったん ATS を有効にしておいて、ATS の対象から除外するドメインを指定する、などの方法を取るほうが良さそうです。
1 2 3 4 5 6 7 8 9 10 11 |
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>example.com</key> <dict> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict> |
この例の場合ですと、example.com だけは ATS の対象から除外して、他の全てのドメインに対しては ATS が有効になる。
- – 参考リンク –
- UIWebViewやWKWebViewでウェブページがロードされない – Qiita
- [iOS 9] iOS 9 で追加された App Transport Security の概要 | Developers.IO
- なぜか全然表示できないiOS9でのWebView(凡ミス) – Takahiro Octopress Blog
- Swift & iOS の関連記事
- Unityのインストールと初期設定
- WKWebView/UIWebViewでNavigation Barの下にウェブページが隠れるのを回避
- SwiftでArray(配列)などをシャッフル
- Navigation Controllerで画面遷移させるSwiftコード
- Swiftでタップ/スワイプのイベント処理実装・UITapGestureRecognizerとUISwipeGestureRecognizer
- UIPageViewController画面下部のUIPageControlを非表示にする
- Swiftのバージョン確認・REPL実行
- Xcode7.0アップデートで遭遇した課題2つ
- 正規のXcodeかどうかチェック(XcodeGhostマルウェア騒動)
- WKWebViewでtarget=”_blank”のリンクを開く(Swift)
Leave Your Message!