はじめに

webviewでhttpサイトを表示しようとするとios9以降の場合、サイトが表示されません。
ios9よりATS(https通信)の設定がデフォルトでオンになっているため、表示できません。
前に同様の記事を書いたのに、ちょっとはまってしまいました。ちゃんとログをみないとだめですね。

ATSについてはこちら:
http://to-developer.com/blog/?p=2036

事象

実装コード例)

    @IBOutlet weak var webView: UIWebView!
    let homeUrl = "http://yahoo.co.jp" // これがhttpsサイトならATSが有効状態で表示します。
    
    override func viewDidLoad() {
        super.viewDidLoad()
        openUrl(homeUrl)
    }
    
    func openUrl(urlString: String){
        let url = NSURL(string: urlString)
        let urlRequest = NSURLRequest(URL: url!)
        webView.loadRequest(urlRequest)
    }

httpサイトを表示しようとするとxcodeのログに次のログが出力されます。

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app’s Info.plist file.

対応策

xcodeのログの通りplistファイルで一時的に回避することができます。
次のコードを追加することで回避できます。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

その他おすすめの備忘録

 

Comments are closed.