面白きことは良きことなり

拙く未熟なiOSエンジニアの備忘録と戯言

ATS(App Transport Security)を"Xcode8 beta3"+"iOS10 beta3"でテストしてみた

今回は、beta3が出て早々記事にしてみた!
どうせ結果は、beta2と変わらないんだろうなーと思って検証してみたが…

前回のXcode8.0 beta2の追記からhttpによるLANへのアクセスも検証に加え始めた。

テスト方法

テスト方法は、プログラムの使い回しで基本今までを踏襲していますが、下記赤字が変更点となります。

  • iOS10は、iOS10.0 beta3を使用
  • iOS9は、beta3と同日?に出たiOS9.3.3を使用
  • ATSは、最初Xcode7BuildのipaとiOS9の組み合わせで発動していたので、Xcode7BuildとXcode8Buildで違いでるか比較
  • NSAllowsArbitraryLoadsInWebContentの設定で挙動がどう変わるか確認
  • HTTPSは、URLにhttps://www.apple.com/を使用
  • HTTPは、URLにhttp://www.yahoo.co.jp/を使用
  • HTTP(LAN)は、MAMPを使用してURLにhttp://192.168.0.12/を使用
  • UIWebView / WKWebView / NSURLSession / SFSafariViewController の4つで比較
  • キャッシュ?のようなものが残り不自然な挙動があったため、テスト毎にテストアプリをインストールし直して実行
  • ATSは表のKeyのみを設定
  • 補足としてnoneとなっているものはKeyを削除している状態のこと

↓↓↓以下結果 (赤字がbeta 2と比較して変わった点)↓↓↓

Xcode7.3.1 Build

f:id:aryzae:20160720013554p:plain

Xcode8.0 beta3 Build

f:id:aryzae:20160720013601p:plain

結果

  • iOS9.3.3が出たことで、もしかしたらiOS9もLANは無条件でアクセスできるようになるか?!と淡い期待したけど、そんなことはなかった。
  • NSAllowsArbitraryLoadsInWebContentが効いているものの、WKWebViewではなく、何故かUIWebViewに効いていた…バグとしか思えない。
  • さらにこの時、UIWebViewDelegateのwebViewDidFinishLoad(_:)が2回呼ばれる不可解な現象もあった。

beta2からもう変わることないし、意味ない検証になると思っていたけど、
こんなこともあるから確認するって大事だなぁ。

iOS10は個人的にiOS8の時と同じ匂いがしてきていて不安が募るので、
Apple様には是非とも頑張ってもらいたい。



===関連記事===

Xcode8.0 beta の記事

aryzae.hatenablog.com

Xcode8.0 beta2 の記事

aryzae.hatenablog.com