Xamarin,iPhoneアプリでATSを無効にしてHTTP通信をする方法


iPhone アプリの開発では、App Transport Security(ATS) というセキュリティ設定がデフォルトで有効になっているため、適正な HTTPS 通信でないと Web API を呼び出すことができません(自己証明書はダメです)。

Xamarin で開発する場合も iPhone の制約は逃れられないので、HTTPClient などで Web API を呼び出そうとしても ATS に違反しているという例外が発生してしまいます。

System.Net.WebException がスローされました The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

Xamarin で ATS を無効にするには、info.plist をテキストエディタで直接開き、以下の設定を追加します。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

これで HTTP 通信の Web API であっても呼び出すことができるようになります。

なお、アプリの申請時にこの設定を行っていると説明を求められるらしいので、本番サーバーでは HTTPS 通信にした方がよいかと思います。

・参考サイト