新人奮闘記9

iOSでお天気アプリ開発

現在お天気アプリを作成していまして、Open Weather Map というお天気情報をAPIで提供しているサービスを使ってアプリを作成しているkenyです。
Open Weather Map APIからJSONデータを取得しようとhttpリクエストする時にハマってしまいましたので記します。ATSが要因ですが…

今回は、お天気情報を取得できるOpenWeatherMapというAPI からお天気情報をjsonデータで取得するため、http通信を行いました。

URLはhttp://api~としています。

[code]
funtouki9_1

上記を実行すると

App  Transport Security has blocked ~というエラーが出力されてしまいました。
どうやら、http通信をブロックしました~。という内容のようです。

※今回はATSの話題ですので、30行目の例外処理は割愛させていただきます。

結論的には、Xcode7iOS9からアプリが通信を用いる場合、Appleからhttps通信が推奨されており、デフォルトでは、このATS(App Transport Security)が有効のため、https通信しか行う事ができない設定になっているようです。今回はhttp通信を用いるので、このATSを無効化しようと考えました。

回避策は[特定のドメインのみATSを無効化する]など方法は複数ありますが、今回は簡単に無効化する方法がありましたので、その方法で行いました。

info.plistから、App Transport Security SettingというKeyを追加しAllow Arbitrary LoadsをYESに変更します。

funtouki9_2

これで再度実行すると、無事http通信が可能となりjsonの取得に成功しました。

まとめ


今後はWEBアプリなど、http通信を用いる場合ATSをinfo.plistから解除する必要がある。
またATSを必要以上に無効化すると、アプリの審査にも影響があり、セキュリティの面からも不用意にATSを無効化しない事が必要だと感じました。

keny



アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム