新人奮闘記9
iOSでお天気アプリ開発
現在お天気アプリを作成していまして、Open Weather Map というお天気情報をAPIで提供しているサービスを使ってアプリを作成しているkenyです。
Open Weather Map APIからJSONデータを取得しようとhttpリクエストする時にハマってしまいましたので記します。ATSが要因ですが…
今回は、お天気情報を取得できるOpenWeatherMapというAPI からお天気情報をjsonデータで取得するため、http通信を行いました。
URLはhttp://api~としています。
[code]
上記を実行すると
App Transport Security has blocked ~というエラーが出力されてしまいました。
どうやら、http通信をブロックしました~。という内容のようです。
※今回はATSの話題ですので、30行目の例外処理は割愛させていただきます。
結論的には、Xcode7 、iOS9からアプリが通信を用いる場合、Appleからhttps通信が推奨されており、デフォルトでは、このATS(App Transport Security)が有効のため、https通信しか行う事ができない設定になっているようです。今回はhttp通信を用いるので、このATSを無効化しようと考えました。
回避策は[特定のドメインのみATSを無効化する]など方法は複数ありますが、今回は簡単に無効化する方法がありましたので、その方法で行いました。
info.plistから、App Transport Security SettingというKeyを追加しAllow Arbitrary LoadsをYESに変更します。
これで再度実行すると、無事http通信が可能となりjsonの取得に成功しました。
まとめ
今後はWEBアプリなど、http通信を用いる場合ATSをinfo.plistから解除する必要がある。
またATSを必要以上に無効化すると、アプリの審査にも影響があり、セキュリティの面からも不用意にATSを無効化しない事が必要だと感じました。
keny
admin at 2016年08月18日 10:00:19