23974


バージョン7.2.1のXcodeを使っています。  
Xcodeで画面いっぱいにWebViewを貼り付け、ViewController内を以下のように変更しました。

[code]

    import UIKit
    
    class ViewController: UIViewController {
        @IBOutlet weak var webview: UIWebView!
        override func viewDidLoad() {
            super.viewDidLoad()
            let startUrl = "http://google.co.jp"
            if let url = NSURL(string: startUrl) {
                let urlRequest = NSURLRequest(URL: url)
                self.webview.loadRequest(urlRequest)
            }
        }
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }
    }
    
[/code]

期待としては、動作させるとGoogleのトップ画面がWebViewに表示されると思ったのですが、真っ白のままです。  
ググったところこちら（<http://qiita.com/g08m11/items/199d517ddf279d50d6e6>）にたどりつき「!!白い画面のままならこちらの対応をお願いします!!」の記事内容に書かれていることを試しましたが、白いままです。他に確認・編集するべきところがあるのでしょうか？

また、参考にしたサイトに「APIを使っているため敢えて非推奨でありながらこちらの対策を取っています。」と書かれています。WebViewはWebサイトを表示させるためにあるものだとおもうのですが、なぜWebViewにWebサイトを表示させることが初期設定で出来なくされて非推奨APIの使用が必要になる場合があるのかがよくわかりません。

以上の、  
①WebViewにWebサイトを表示させるのに足りない手順  
と  
②WebViewが初期設定で使えなくなっていることがある理由  
についてどちらかでもご存知の方いらっしゃいましたら、よろしくおねがいします。


CC BY-SA 3.0
2016-04-12T16:48:18.813
23973
2016-04-12T19:25:27.947
2016-04-12T19:25:27.947
5519
8823
question
swift
SwiftのWebViewにサイトが表示されない


iOS 9からApp Transport
Security（略してATS）と呼ばれる仕組みが追加されました。ATSが有効な環境では基本的に安全なHTTPSの通信しか許可されておらず、安全でないHTTP通信を行うにはATSを無効にするか、通信したいドメインを個別にInfo.plistに列挙する必要があります。

挙げられたサイトの例では前者の方法、ATSを無効にすることでHTTP通信を行えるようにしているので、非推奨の方法ということです。  
例としてアクセスしているサイトはその方が作ったWebサイトのためHTTPSの環境が用意されていないので、仕方なくそうしている、ということです。

GoogleはHTTPSのサイトも用意しているので、URLを`https://www.google.co.jp`とすれば表示されると思います。試してみてください。

または、例のようにATSを無効にするか、`http://www.google.co.jp`をATSの例外としてInfo.plistに登録します。


CC BY-SA 3.0
2016-04-12T19:24:27.957
23974
2016-04-12T19:24:27.957
5519
23973
answer