iOS14.5 IDFAを扱っていないつもりだったけどApp Tracking Transparencyの文脈でリジェクトされてしまった🙄

iOS14.5から広告トラッキングなどの実装を入れているアプリについては、AppTrackingTransparencyフレームワークを通じたユーザーからの許可が必須なりましたね。
個人開発のアプリで意図的にトラッキングをしていないにも関わらす、リジェクトされてしまったので、この記事はその時の対応備忘録です。

三行まとめ

  • アプリ内で意図的にユーザーをトラッキングしてないのにリジェクトされた
  • 原因はサードパーティSDK内でIDFAを取得していたことと、App Store Connectのプライバシー設定が正しくないことだった
  • 原因と思われるFirebaseやFacebookSDKをアップデート・置き換え・設定の変更を実施したり、App Store Connectのプライバシー設定を変更したりすることで審査を通過した

アプリでユーザーをトラッキングしてないのにリジェクトされた

個人開発のアプリではまだ広告を出しておらずユーザーをトラッキングする実装を入れていませんでした。しかし、2021年5月頭に出した審査でリジェクトされてしまいました。

リジェクト理由は下記の通りで、トラッキング前に許諾をリクエストしていないことと、App Store ConnectのAppのプライバシー設定が適切でないことが指摘されていました。

対応としては、トラッキングの機能を取り除くか、トラッキングが必要ならAppTrackingTransparencyフレームワークを通して許諾を取ること、そしてApp Store ConnectのAppのプライバシー設定を適切な内容に見直すこと等が求められました。

Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing


We noticed you do not use App Tracking Transparency to request the user's permission before tracking their activity across apps and websites. The app privacy information you provided in App Store Connect indicates you collect data in order to track the user, including Product Interaction, Crash Data, User ID, Performance Data, and Other Diagnostic Data.

Starting with iOS 14.5, apps on the App Store need to receive the user’s permission through the AppTrackingTransparency framework before collecting data used to track them. This requirement protects the privacy of App Store users.

Next Steps

Here are two ways to resolve this issue:

- You can remove the tracking functionality from your app and update your app privacy information in App Store Connect.
- If you decide to continue tracking users, you must implement App Tracking Transparency and request permission before collecting data used to track the user or device. When you resubmit, indicate in the Review Notes where the permission request is located.

Resources

- See Frequently Asked Questions about the new requirements for apps that track users.
- Learn more about designing appropriate permission requests.

そもそもトラッキングとは?

なぜユーザーをトラッキングしていないのに、リジェクトされてしまったのでしょう。
ラッキングの定義についてAppleのドキュメントには、
「トラッキングとは、自分のAppで収集したユーザーやデバイスに関するデータを、ターゲット広告や広告効果測定を目的として、他社のApp、Webサイト、またはオフラインのプロパティから収集されたユーザーやデバイスに関するデータに紐付ける行為を指します」
と書かれていました。
ターゲット広告や広告効果測定を目的としていることがポイントですね。

また注目したいのが、 自分のAppで収集したユーザーデータを、他のデベロッパのAppで収集されたユーザーデータと組み合わせてターゲット広告の表示や広告効率測定を行うサードパーティのSDKをAppに組み込むこと(これら以外の目的でそのSDKを使用する場合も含む)。たとえば、アナリティクスのSDKによって自分のAppで収集したデータを、他のデベロッパのAppがターゲット広告を表示するために利用することがこれに該当します。 という説明です。

つまり、自分のアプリではトラッキングをしていなくても、使っているSDKの中で広告ID(IDFA)を取得していると、これもトラッキングとしてみなされるようです。

そのため、今回はSDK側のトラッキングの可能性とトラッキングの可能性がある場合はそれを停止するための調査・対応を行いました。

原因と思われるサードパーティSDKのアップデートや設定の変更

Facebook SDKの設定変更

今回のアプリではFacebookログインを実装しているため、FBSDKLoginKitを使っています。FBSDKLoginKitやそれに付随してインストールされるSDKの中ではIDFAを取得している箇所があったため以下の対応を行ました。

まず、広告IDの収集に関する設定FacebookAdvertiserIDCollectionEnabledをfalseにしました。

Disable Collection of Advertiser IDs To disable collection of advertiser-id, open the application's .plist as code in Xcode and add the following XML to the property dictionary:

<key>FacebookAdvertiserIDCollectionEnabled</key>
<false/>

https://developers.facebook.com/docs/app-events/getting-started-app-events-ios?locale=ja_JP

また、ドキュメントにしたがってDeveloperサイトからIDFAの収集をオフにしました。

IDFAを収集せずにApp Eventsをトラッキングする場合は、アプリダッシュボードの詳細設定セクションでIDFAの収集を無効にします。

https://developers.facebook.com/docs/ios/troubleshooting?locale=ja_JP#faq_1717948608473924

f:id:muchan611:20210513020427p:plain

Firebase/AnalyticsFirebase/AnalyticsWithoutAdIdSupportに置き換える

Facebookの設定だけでは審査に通らなかったので、FirebaseのSDKについても調査したところ、Firebase/AnalyticsSDKを利用していると審査をリジェクトされるといった事例をissueから発見しました。
https://github.com/firebase/quickstart-unity/issues/994#issuecomment-825922406
さらにfirebaseのリリースノートを確認したところ、この問題に対応したFirebase/AnalyticsWithoutAdIdSupportがリリースされていたため、Firebase/AnalyticsFirebase/AnalyticsWithoutAdIdSupportに置き換える作業をしました。

Added Firebase/AnalyticsWithoutAdIdSupport subspec for developers of apps that aren’t using AdSupport or subject to AppTrackingTransparency.

https://firebase.google.com/support/release-notes/ios?hl=ja#version_7110-april_20_2021

App Store ConnectのAppのプライバシー設定を変更

App Store Connect > 一般 > Appのプライバシーから、ユーザートラッキングデータの追加・変更ができます。
「ユーザートラッキングに使用されるデータ」に該当するものがある場合、AppStoreで以下のように表示がされます。(ID、使用状況データなどの各項目はアプリの設定によって異なります)

リジェクトされたアプリでは、これまで、「ユーザートラッキングに使用されるデータ」にID・使用状況データ・診断データなどを含んでいましたが、今回は上記対応によってSDK側でのトラッキングも取りやめたため、「ユーザートラッキングに使用されるデータ」の項目自体をApp Store Connectのプライバシー設定から取り除きました。

以上の対応を行うことで、無事審査に通過することができました。

まとめ

ここまで述べたように、自分のアプリでトラッキングをしていなくても利用しているSDKの中でIDFAを取得していて、許諾を取っていないと、アプリがリジェクトされてしまうようです。
今回はFirebaseの事例を紹介しましたが、マーケティングツールで有名なAdjustのSDKについても、IDFA取得が理由でリジェクトされる事例が報告されており、Adjust側でSDKの修正を行っているようです。
https://www.adjust.com/ja/blog/How-to-be-strategic-about-attribution-after-iOS145/
こういった場合は各SDKリポジトリで既にissueが立っていることも多いかと思いますので、困った際には原因になっていそうなSDKのissueを調べてみると良いかもしれません。

そして意外と雰囲気で設定してしまうことのある(そんなことない?)プライバシー設定は、よくよくAppleのドキュメントと照らし合わせると、正しく設定できていないこともあります。こちらは審査に関係なく修正が可能ですので、改めて見直してみると良いかもしれません。

だいぶ調査に時間を要したので、気持ちがこもって少し長い記事になってしまいましたが、似たような問題を抱えた方々の参考になるといいなぁ💭💭と思っています。

ではでは🤗🤗