はじめに
XcodeでiOSアプリを開発する上で、api通信を挟んでデータを取得する機会が多いと思いますが、iOS9以降ではデフォルトではhttps通信しか許可されていません。
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.
というようにエラーが出力され、http通信が拒否されます。
今回はhttp通信をできるようにするやり方を書いていきます。
info.plistの編集
http通信を許可するにはinfo.plistを書き換えます。
info.plistはプロジェクト作成時に自動で作成されていて、プロジェクトの設定ファイルみたいなものです。
このような画面になっていて、「Information Property List」にフォーカスをあてると+ボタンがでてくるのでそれをクリックすると「Information Property List」以下に新しい項目を入力する部分が出てきます。
「appt」ぐらいまで打てば候補で「App Transport Security Settings」というのがでてくるのでそれを選択します。
「App Transport Security Settings」の左にある「▶」をクリックして「▼」にして「App Transport Security Settings」の右にあるプラスボタンをクリックします。
そうすると同じように入力のフォームが出てくるので「Allow Arbitrary Loads」とします。
その値を「YES」に書き換えます。
これで設定は完了です!
そもそもHTTP通信は非推奨なので注意
そもそもiOS9移行で通信が暗号化されるHTTPS通信を推奨としていて、今はこの設定をすることでHTTP通信ができますが、いずれは禁止になり申請が通らなくなってしまう可能性はあるので注意です。今回紹介したやり方はその場しのぎでしか無いので、apiを用意している場合はhttpsに対応させておくことをおすすめします。
http通信が許可できたら
http通信を許可することができたら実際にapi通信を実装していきましょう。
その具体的なやり方はこちらの記事にまとめたのでぜひ参考にしてみてください。