iOS9.0 以降、セキュリティ上の理由から、Foundation.framework の HTTP リクエストプロトコルが SSL/TLS に変更されました。つまり、プログラムから発行されるすべての HTTP リクエストはデフォルトで HTTPS のコンテンツをリクエストし、HTTPS で 404 エラーが発生した場合は HTTP のコンテンツをリクエストしません。もしもあなたのアプリが元々HTTPS を使用している場合、基本的に問題はありません。しかし、HTTP を使用している場合は、次のようにする必要があります:1. サーバーの設定を変更して HTTPS アクセスをサポートするようにすること、2. アプリの info.plist の設定を変更して、アプリが通常の HTTP プロトコルのウェブサイトにアクセスできるようにすること。そうしないと、デバッグ中に次のようなログが表示されます:
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.
info.plist を変更する際、APPLE は次のような変更方法を提供しています。以下の内容を info.plist に追加するだけです。
NSAppTransportSecurity
NSExceptionDomains
lidaren.com
NSIncludesSubdomains
NSTemporaryExceptionAllowsInsecureHTTPLoads
NSTemporaryExceptionMinimumTLSVersion
TLSv1.1
もしもあなたのアプリがブラウザ機能を持っている場合、以下のように変更すると、完全に HTTP アクセス機能を解放することができます。
NSAppTransportSecurity
NSAllowsArbitraryLoads
最後に、元の記事のリンクを添付します。https://stackoverflow.com/questions/30720813/cfnetwork-sslhandshake-failed-ios-9