【iOS10】ATSのおさらい 2016年末
この記事は「iOS その2 Advent Calendar 2016」10日目の記事です。
テーマは、 2016年中 にiOSにおけるATSをおさらいしよう! です。
自己紹介
私は、株式会社サイバーエージェント CA ProFit-X という広告プロダクトで、メディア様の収益を最大化することを目標にエンジニアをやってます。 CA ProFit-X は、モバイル向けネイティブ広告(主にインフィード広告)専業のSSP事業者なのです!
お題
モバイルアプリ/モバイルウェブサービス上で広告運用時に気にしておきたい ATS について、今回は最新OSである iOS10 にターゲットを絞り、お話ししたいと思います。
ATSとは?
ATSは、App Transport Securityの略で、2015年にiOS9がリリースされた際に導入されたセキュリティ仕様です。
詳しい仕様は コチラ(Apple Developer Library)です。
簡単に言うと、アプリとWEBサービス間の接続のプライバシーと、データの整合性を向上を目的に、セキュリティ仕様に準拠していない接続は認めないってことです。
例えば下記とか。
サーバー証明書に関する要件
Webサーバーに関する要件
2017年からは対応が必須になる
原則対応が必須になります。新規アプリ/既存アプリ問わずApp Storeに提出するには ATS有効化が必須条件 です。
対象
まぁ、ほとんど全部ですね。
- iOS9.0以上
- WKWebView
- UIWebView
- NSURLSession
- NSURLConnection
ATSを無効化するには?
基本的に、セキュリティ仕様に準拠しとけば良いのですが、いちおう。
細かいキーの仕様についてはコチラです。
NSAllowsArbitraryLoads
- デフォ値は
No
Yes
に設定した場合NSExceptionDomains
に設定したドメインのに対するネットワーク接続がATS無効化されて可能になる- App Storeへアプリを提出する際にAppleに対する説明が必要になる
- (後述する)NSAllowsArbitraryLoadsInWebContentが
Yes
の場合、このキーは無効になる
NSAllowsArbitraryLoadsInWebContent
- デフォ値は
No
Yes
に設定した場合- 下記のネットワーク接続がATS無効化されて可能になる
- WKWebView
- UIWebView
- つまり、NSURLSession/NSURLConnection接続はATS有効化のまま、WebViewのみATS無効化が可能
- 下記のネットワーク接続がATS無効化されて可能になる
- iOS10以上が対象、iOS9以下については本キーを
Yes
にした上で、NSAllowsArbitraryLoads
も設定する
(´ε`;)ウーン…
まとめ
iOS10なら、WebViewでATSを無視できるっちゃできるのね。
でも、これはAppleの独断とかではなく、セキュリティ的に安全な配信をしていこうぜって大きな流れの1つなわけで。
GoogleもHTTPSサイコー!って言ってるわけだし。
ATS対応ができねーとかケチくさいこと言わずに、堂々とやってやりましょうよ!