iOS는 http 통신이 기본적으로 불가능하다. https만 허용한다. 하지만 http가 꼭 필요한 경우가 있다.
Info.plist에서 NSAppTransportSecurity 라는 dictionary가 있는데, NSAllowsArbitraryLoads를 true로 설정해주게 되면 http 통신이 가능하다.
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>{허용 원하는 URL}</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
나는 pod install만 하면, 기껏 해놓은 true가 false로 다시 overwrite되는 오류가 있었다. 온갖 설정을 다 해봐도 소용이 없었는데, 결국 답은 공식문서였다.
https://developer.apple.com/documentation/bundleresources/information_property_list/nsapptransportsecurity/nsallowsarbitraryloads
Info.plist 안에 3가지 요소 중에 하나라도 있으면 NSAllowsArbitraryLoads의 키값은 무시된다. 즉 무조건 false로만 설정된다는 거다.
나는 NSAllowsLocalNetworking이 있었는데, 이걸 지워주니까 http가 드디어 허용됐다.