iOS アプリ開発 iOS 9 のWebView 問題

apple_416x416

今日、久しぶりに仕事でiOSアプリ開発をしました。

久しぶり過ぎて前から結構変更点があり、つまずいた所があったのでまとめておきます。

 

現象:単純なWebViewのアプリがiOS9端末で動作しない

結構前に作ったiOSアプリ(Base SDK 8.0)プロジェクトのターゲットバージョンを8.0に変更し、Base SDK 9.0にアップデートしたあと、iOS9の端末で動かした時に発生。

現象としては、WebviewでURLを開いた際、以下のエラーが発生し、ページの読み込みに失敗するという状態です。

Error Domain=NSURLErrorDomain Code=-1022 “The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.” UserInfo={_WKRecoveryAttempterErrorKey=<WKReloadFrameErrorRecoveryAttempter: 0x14ed6cfd0>

エラー内容

 

エラーレスポンスを元に調べていたところ、こちらのサイトを見つけました。

記事によるとiOS9から、アプリとweb間の通信が、HTTPSがデフォルトになったとのこと。

まじですかー。

App Transport Security policy (ATS)

公式ドキュメントの一部を抜粋すると、iOS9からアプリとWEB間の通信をセキュアなものを推奨するようになったとあります。(デフォルト設定 : TLS v1.2)

そのため、デフォルト設定のままだとHTTPでの通信はできなくなっています。
(HTTPSでの通信に強制的に置き換わる)
通信できるようにするにはいくつか方法がありますが、下記に紹介していきます。

 

対処法

 

↑で紹介した記事に、もろもろの対策が書いてありました。

今回現象が発生したアプリは、自社のアプリなので、応急処置として一番簡単な、ATSを無効化させる方法↓をとりました。

ATSを無効化する方法

① info.plistファイルにApp Transport Security SettingsのDictionaryを追加

②App Transport Security Settingsのitemに Allow Arbitrary Loads(値 YES)を追加

スクリーンショット 2015-12-02 22.59.19

 

まとめ

 

今回の現象は、Base SDKが9.0以上のプロジェクトでビルドしたアプリで発生する問題なので、昔作ったアプリへの対応はしなくてよさそう。

今回は、応急処置として、ATSの無効化をしたが、受託案件等では、ATS設定の振り分け等、ちゃんとしたやり方をした方がよい。

以上です。

おつかれさまでした。

 

 

コメントを残す

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

ABOUTこの記事をかいた人

主に芸能ニュース・エンタメ・WordPress・iOS・Android・ゲームについて書いてます。 楽しいこと、面白いことが大好き。本業はシステムエンジニア。芸能ニュース、アフィリエイト、スマホゲーム、アプリ開発についての記事を書いていきます。