LoginSignup
10
11

More than 5 years have passed since last update.

iOS9にするとアプリ内のサイト表示ができなくなったときの解決法(HTTP通信ができない)

Last updated at Posted at 2015-10-12

背景

アプリ内で自社広告のために、ブラウザ(UIWebView)を貼り付けて広告を出しているのだけれど、iOS9にあげると表示がされなくなってしまった。

アプリ:【くまのがっこう】ジャッキーのほしあつめ
IMG_2835.png IMG_2836.png

左画面の下部分にバナー状の広告を表示しているのと、右上のアイコンをクリックすると右画面が表示されて、自社作成アプリが表示される仕様なのだけれど、何も表示されず真っ白になってしまった。

原因

どうやらiOS 9.0(OS Xは10.11)以上から導入されたATS(App Transport Security) という、アプリとウェブサービスとの間でセキュアな接続を確保するためのものです。
デフォルトではHTTP通信がHTTPS通信(SSL通信)に切り替えらてしまいます。

実行すると以下のようなエラーが出ているのがわかります。
didFailLoadWithError error: Error Domain=NSURLErrorDomain Code=-999 "The operation couldn’t be completed. (NSURLErrorDomain error -999.)" UserInfo=0x14e989f0 {NSErrorFailingURLKey=http://tadamatu0001.web.fc2.com/, NSErrorFailingURLStringKey=http://tadamatu0001.web.fc2.com/}
shouldStartLoadWithRequest url: https://tadamatu0001.web.fc2.com/
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)

これによりHTTP通信がHTTPS通信(SSL通信)に切り替えられているのが分かる。

参考:App Transport Security Technote(英語)

解決方法

ATSを有効にした状態で、ATSの対象にしないドメインを設定すればよい。

具体的には以下のようにする。

まずはInfo.plistSource Codeで開く。
[Info.plist]-[Open As]-[Source Code]
スクリーンショット 2015-10-12 8.27.27.png

次にATSを有効にした状態で、ATSの対象にしないドメインをInfo.plistに記載する。

Info.plist
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>tadamatu0001.web.fc2.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
            </dict>
        </dict>
    </dict>

NSIncludesSubdomainsはサブドメインにも適用するかどうかを設定しています。
他のオプションは以下を参考にしてください。
iOS 9 で追加された App Transport Security の概要

結果

これで無事に表示されるようになりました。

アプリ:【くまのがっこう】ジャッキーのほしあつめ
IMG_2840.png IMG_2839y.png

めでたしめでたし。

この記事が皆様のお役に立てば幸いです。

ではまた。

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11