🔒

iOS 14.5からのユーザトラッキング1: App Tracking Transparency(ATT)

2021/06/23に公開

こんにちは、アプリ開発者の安藤ひつじです。

iOS 14.5でユーザのトラッキングに関して大きな変更がありました。

iOS 14.5、iPadOS 14.5、tvOS 14.5以降では、ユーザーをトラッキングしたり、ユーザーのデバイスの広告識別子にアクセスする際、AppTrackingTransparencyのフレームワークを通じてユーザーの許可を得る必要があります。

この変更により、ユーザの許可無くしてトラッキングをすることはできなくなりました。これにはAppleがユーザのプライバシーに、より厳しく配慮することを求めている姿勢が伺えます。

この記事では用語の解説と具体的な変更内容について書きます。

トラッキングとは

トラッキングとは、Appleの「ユーザーのプライバシーとデータの使用」では以下のように定義されています。

トラッキングとは、自分のAppで収集したユーザーやデバイスに関するデータを、ターゲット広告や広告効果測定を目的として、他社のAppやWebサイト、またはオフラインのプロパティから収集されたユーザーやデバイスに関するデータに紐付ける行為を指します。

オフラインのプロパティが具体的に何を指すのかちょっとわかりませんが、例えば、申込用紙やアンケート用紙で収集したEメールや電話番号などが該当するのでしょうか。
ユーザーのプライバシーとデータの使用」にトラッキングの例か挙げられています。以下にいくつか抜粋しました。

  • 他社が所有するAppやWebサイトから収集されたユーザーデータに基づいて、自分のAppの中でターゲット広告を表示すること。
  • 自分のAppで収集したユーザーデータを、他のデベロッパのAppで収集されたユーザーデータと組み合わせてターゲット広告の表示や広告効率測定を行うサードパーティのSDKをAppに組み込むこと。

AdMobなどの広告SDKをアプリに組み込む場合は、この例に該当するでしょう。

ターゲット広告とは

ターゲット広告とは、WebやAppの閲覧履歴などと後述する広告識別子などを紐付けた情報を収集・解析することで、その人が興味を持ちそうな広告を表示することです。興味を持ってもらえる広告を表示することで、以下のメリットが考えられます。

ユーザにとって: 的外れな広告が表示される可能性が減る
App開発者にとって: 広告のクリック率が上がり、広告収入アップが期待できる
広告主にとって: 適切なユーザ層にアプローチすることができる

広告識別子とは

デバイスの広告識別子とは、IDFA (Identifier for Advertisers)のことで、デバイスごとに割り当てられたユニークなIDです。IDFAは、AdSupportフレームワークを使って以下のコードで取得できます。

import AdSupport

ASIdentifierManager.shared().advertisingIdentifier.uuidString

しかし、iOS 14.5からの変更点として、App Tracking Transparencyを通してユーザの許可を得るまでは、IDFAはゼロ埋めされたUUIDが返されるようになりました
ちなみに、シミュレータの場合もゼロ埋めされたUUIDが返されます。

App Tracking Transparency (ATT)

上記の通り、ATTを通してユーザの許可を得るまでは、IDFAを取得することはできません。また、Appleの「ユーザーのプライバシーとデータの使用」のFAQにも記載があるように、IDFA以外の識別子を使ってトラッキングする場合でも、ATTを通してユーザの許可が必要です

Q. トラッキングの許可を求める画面でユーザーの許可が得られなかった場合、IDFA以外の識別子(例:ハッシュ化されたEメールアドレスやハッシュ化された電話番号)を使ってユーザーをトラッキングすることはできますか?
A. いいえ。ユーザーをトラッキングするには、AppTrackingTransparencyフレームワークを通じてユーザーの許可を得る必要があります

最近、アプリを使っていて以下のようなダイアログが表示されることがありませんか。このダイアログこそがATTフレームワークを使用してユーザにトラッキングの許可を求めているものになります。

このダイアログは、ATTフレームワークを使って以下のコードで表示することができます。requestTrackingAuthorizationメソッドのcompletionHandlerにユーザが許可したかどうかのステータスが返ってくるため、このステータスをチェックすることでターゲット広告をロードするかどうか決めることができます。

import AppTrackingTransparency

ATTrackingManager.requestTrackingAuthorization { status in
    if status == .authorized {
        // TODO: ターゲット広告のロード
    }
    else {
        // TODO: ターゲティングしない広告のロード
    }
}

また、このメソッドを使う前にInfo.plistにトラッキングの目的を記載しておく必要があります。このメッセージはATTダイアログ内で表示されます。

<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>

なお、ATTダイアログは最初の一回しか表示されません。それ以降はiOSの設定からのみ変更が可能となります。もし、開発などでATTダイアログの表示を再確認したい場合は、アプリをアンインストール → 再インストールする必要があります。

User Messaging Platformとファンディングチョイス

ところで、普通の人が「あなたのアクティビティの追跡することを許可しますか?」とかいきなり聞かれても、追跡…?、よくわからない…、怖い…、となってなかなか許可してくれません。
丁寧なアプリだと許可を求めるダイアログを表示する前に、内容や目的をちゃんとユーザに説明しています。しかし、このようなUIを作るのはなかなか面倒です(基本的に一回しか表示しないので、コスパが悪い)。

そこで、GoogleがUser Messaging Platform (UMP)ファンディングチョイスという仕組みを提供しています。
Part 2では、UMPとファンディングチョイスについて見ていきます。
https://zenn.dev/hituziando/articles/3938fac7588853

参考文献

https://developer.apple.com/jp/app-store/user-privacy-and-data-use/

Discussion