Xamarin を使用したアプリで自分のページを WebView を開こうとしたところ、以下のようなメッセージが出力され、Web ページを開く事ができなかった。
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.
どうやら iOS では ATS(App Transport Security) という仕組みにより http での通信はデフォルトではブロックされる仕様のようだ。
http://developer.hatenastaff.com/entry/2016/06/16/165924本来であればサーバを https 対応にするほうが良いのだろうけど、今すぐ https 対応にできないので、アプリ側で http でも通信できるように設定をしてみた。
幸い Xamarin のページに ATS の設定方法が記載されていたので、それを見ながら Info.plist を編集したところ、https でないページもアクセスできるようになった。
https://developer.xamarin.com/guides/ios/platform_features/introduction_to_ios9/ats/Xamarin の iOS 向けプロジェクトから Info.plist を開き、以下のような感じに設定する。
NSAppTransportSecurity - Dictionary
NSExceptionDomains - Dictionary
(ドメイン名) - Dictionary
NSExceptionMinimumTLSVersion - string - TLSv1.0
NSExceptionRequiresForwardSecrecy - Boolean - No
NSExceptionAllowsInsecureHTTPLoads - Boolean - Yes
NSIncludesSubdomains - Boolean - Yes
こうする事で指定したドメインだけを WebView で表示する事ができるようになる。
また、NSAppTransportSecurity 以下に NSAllowArbitraryLoadsInWebContent を追加し YES にするとドメイン関係なく WebView で https でないページも開く事ができるようだ。