iOS14におけるSafari以外のブラウザへのITP (Intelligent Tracking Prevention) 適用についての調査

iOS14におけるITPの影響の調査

結論 (推測含む)

iOS14のリリースの タイミングで Safari以外のブラウザアプリ及びWebviewアプリにITPがデフォルトで有効になった模様。
つまり、iOS上のChromeFireFoxなどのブラウザも全てITP (Intelligent Tracking Prevention) がデフォルトで有効になり 3rd Party Cookie によるトラッキングは不可になった。

さらに、iOS13以前の端末でもこのタイミングで新規にブラウザやWebviewアプリをインストールした場合はITPがデフォルト有効になってしまう事象を観測した。

これまでの経緯

2019/12/23

UIWebViewからWKWebViewへ移行するようにアナウンスがされる。
新規アプリは2020/4月から、既存アプリの更新は2020年/12月からリジェクト対象
https://developer.apple.com/news/?id=12232019b

2020/6/22

WWDC2020でiOS14からWKWebViewが強化されることを発表
Discover WKWebView enhancements (25:11)

...to use it in their apps. And we're happy to announce that in iOS 14 and macOS Big Sur, ITP is enabled by default an all WKWebView apps. Users have the control here.

https://developer.apple.com/videos/play/wwdc2020/10188/?time=1511

2020/9/17

iOS14が (突然) 公開
iOS14にアップデートされるとアナウンス通り、WKWebViewを使っているWebviewは全てITPがデフォルトで有効になるためブラウザを含む全てのWebview利用アプリで3rd Party Cookieのトラッキングが無効化された

動作確認

Safari Chrome
MacOS Catalina 10.15.6 disabled enabled
iPad/iOS13.7 disabled enabled
iPhone8/iOS14 disabled disabled
iPhone8/iOS13.7 (新規Chromeインストール) disabled disabled

それぞれ、Treasure Dataが公開しているJS SDKで 3rd Party Cookieである td_global_id が書き込めるかで調査を実施した。
disabledの場合は

  • fetchGlobalID()のコールバックはnullが入る
  • Treasure Data上には毎回違う td_global_id が保存される のでITPが適用されていると思われる。

下記htmlをAWS S3上に配置してhttpsでアクセスして動作を確認。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>

<script type="text/javascript">
!function(t,e){if(void 0===e[t]){e[t]=function(){e[t].clients.push(this),this._init=[Array.prototype.slice.call(arguments)]},e[t].clients=[];for(var r=function(t){return function(){return this["_"+t]=this["_"+t]||[],this["_"+t].push(Array.prototype.slice.call(arguments)),this}},s=["addRecord","blockEvents","fetchServerCookie","fetchGlobalID","fetchUserSegments","resetUUID","ready","setSignedMode","setAnonymousMode","set","trackEvent","trackPageview","trackClicks","unblockEvents"],n=0;n<s.length;n++){var c=s[n];e[t].prototype[c]=r(c)}var o=document.createElement("script");o.type="text/javascript",o.async=!0,o.src=("https:"===document.location.protocol?"https:":"http:")+"//cdn.treasuredata.com/sdk/2.4/td.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(o,a)}}("Treasure",this);
</script>

</head>
<body>
 <script type="text/javascript">
    var td = new Treasure({
        database: 'yusaku_test',
        writeKey: '3867/cf25f5e01f69e5d31e818c6ece9cf13e35d935ef',
        host: 'in.treasuredata.com',
        startInSignedMode: true
    });

  td.set('$global', 'td_global_id', 'td_global_id');
  td.fetchGlobalID(function(_gid) {
       document.getElementById('td_global_id').innerHTML = _gid;
       document.getElementById('td_client_id').innerHTML = td.client.track.uuid;

       td.trackPageview('cookie_test');
  });
</script>
td_global_id = <span id='td_global_id'>td_global_id</span><br/>
td_client_id = <span id='td_client_id'>td_client_id</span><br/>
</body>
</html>

影響範囲

影響する条件

1.iOS14の全てのブラウザアプリ、及びWebviewアプリ
2.iOS13以前で 2020/9/17 以降に 新規に AppStoreからインストールしたブラウザアプリ、及びWebviewアプリ (※1)

※1
2020/9/17以前からインストールしていたChromeで iPhone8/iOS13.7 及び iPad/iPadOS13.7 で 3rd Party Cookie のトラッキングを確認したところ問題なく動作していた。 (ITP未適用)
しかし

  • iPhone8/iOS13.7 を iOS14 にアップデートしてキャッシュクリア後に計測してみたところ、3rd Party Cookie は 無効化されていた
  • 別の iPhone8/iOS13.7 にAppStore経由で 新規に Chromeをインストールしてみたところ、3rd Party Cookie は 無効化されていた
  • 別の iPhone6/iOS12.4 にAppStore経由で 新規に Chromeをインストールしてみたところ、3rd Party Cookie は 無効化されていた
  • BrowserStack上で iPad/iPadOS11 でChromeを起動して計測してみたところ、3rd Party Cookie は 無効化されていた
  • 上記ITP未適用のChromeと同じバージョン (85.0.4183.109) をソースコードからビルドし、iOSシミュレーターをiOS13.5で起動してインストールしてみたところ、3rd Party Cookie は 無効化されていた

そのため2020/9/17以前からインストールしているブラウザの場合には iOS14にしない限り 影響は出ないが、 新規に ブラウザをインストールした場合はITPが適用されているように思われる。

想定影響数

世界で見た時はiOS上のChromeのシェアは4% ~ 5%とのこと。2%という結果もあるらしい
日本だけで見た場合はおおよそ iOS:Andoird = 45%:55% らしいので、全体の2% ~ 2.5%前後が影響する可能性あり。(モバイル計測だけ、且つ全てのiOSバイスがiOS14にアップデートされた場合)

そもそも

iOS14リリース前でもChrome以外の主要ブラウザは3rd Party Cookieをブロック済みの模様 (FireFoxDuckDuckGo) 。
但し、MS Edgeは今回新規にインストールしているので、以前からインストールしていた場合は3rd Party Cookieが有効になっている可能性もあるので確証はない。

はっきりしない点

しかしながら、同じiOSのバージョン (13.7) で、Chromeのバージョン番号も同じなのにAppStore経由でインストールするタイミングが違うだけでそのアプリの挙動が変わるなんてことある?