IDFAの許可リクエストの表示についてリジェクト例を共有します

# はじめに
この記事は[iOS14でエンジニアがすべきIDFA対応](https://qiita.com/koooootake/items/e467be2c4f63ff605841)の追記です。


春のiOS14のアップデートからAppTrackingTransparencyのリクエストを使用しない場合、IDFAがデフォでオフになるとAppleから[通達](https://developer.apple.com/news/?id=8rm6injj)がきていましたが、詳細が公開されました。**iOS14.5**からはすべてのアプリがAppTrackingTransparencyフレームワークを使用して、アプリを追跡したり、デバイスの広告IDにアクセスしたりするためのユーザーの許可を要求する必要があります、とのことです。
[公式News](https://developer.apple.com/news/?id=8h0btjq7)

本格的に対応するアプリが増える中で、実装手順は[iOS14でエンジニアがすべきIDFA対応](https://qiita.com/koooootake/items/e467be2c4f63ff605841)に記しているのですが、**ATTrackingManager.requestTrackingAuthorizationを利用してAlertを表示できるのは1度きり**であるため、どのタイミングで許可リクエストを表示するか悩んでいる方が多いかと思います。

この記事では、そんな方の参考になるかもしれないと思い、許可リクエストの表示タイミング、事前アラート表示について実際に試行錯誤した結果、Appleさんにリジェクトされた件について共有しようと思います。

# 許可率向上を目指して実装してみた内容
許可率が上がるといいなという思いで、試しに実装してみた内容を共有します。

[記事](https://qiita.com/koooootake/items/e467be2c4f63ff605841)に記載の通り`requestTrackingAuthorization`を利用してAlertを表示できるのは1度きりです。そのため、表示前になぜトラッキングデータが必要かユーザ様に説明をする説明ポップアップを挟みました。
![ad.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119392/71e27e8d-6f6a-bda8-d837-a93e2b8da03c.png)
*Twitterの表記を少し参考にしました*

またこのポップアップを表示するタイミングを、アプリの主体験終了タイミング（マンガアプリなのでマンガを読み終えてビューワーを閉じたタイミング）に設定し、説明ポップアップは`AppTrackingTransparency permission request`が表示されるまで一定期間ごとに表示されるように実装しました。

***

# 表示箇所がわからないというリジェクト
許可リクエスト実装後、2020.12 の出来事です。
`AppTrackingTransparency`がアプリに含まれているのにかかわらず、`AppTrackingTransparency permission request`の表示箇所が不明だ、ということでリジェクトされました。

Appleからの文面は下記です。

```
Guideline 2.1 - Information Needed
 

We're looking forward to completing the review of your app, but we need more information to continue. Specifically, we noticed that your app uses the AppTrackingTransparency framework, but we haven't been able to locate the relevant AppTrackingTransparency permission requests.
While it is not required to implement AppTrackingTransparency at this time, we check to make sure the implementation is compliant with our guidelines when we detect the framework in an app. 

Next Steps

If your app integrates AppTrackingTransparency, please indicate where in your app we can find the AppTrackingTransparency permission request.
If your app does not integrate AppTrackingTransparency, please indicate this information in the Review Notes section for each version of your app in App Store Connect when submitting for review.
```

実装箇所をレビューノートと問題解決センターに提示することでこの時は通りました。
わかりにくいタイミングで表示し、申請するときは**予めリリースノートに`AppTrackingTransparency permission request`の実装箇所を提示しておく**ことを推奨します。


# 確認ポップアップについてリジェクト
AppTrackingTransparencyのリクエスト前に表示していた確認ポップアップの実装について、実装内容について変更はしていなかったのですが、2021.03のタイミングでリジェクトされました。

リジェクト文面は下記です。

```
Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage

We noticed that your app urges or manipulates users to allow the app to track them. Specifically, your app displays its own custom permission request to the user before presenting the iOS permission request. 
Permission requests on iOS give users control of their personal information. It is important to respect their decision about how their data is used. If they decide to not grant permission to your app, you should not ask them to change their mind or force them to reject the request multiple times. 

Next Steps
To resolve this issue, please remove any custom permission requests in your app that appear before the iOS permission request. 
You can provide users with additional information about why you're requesting access to their data before the iOS permission request appears, as long as you don't include your own custom permission request.
```

少し解釈が難しいのですが、

* ユーザーにAppTrackingTransparencyのリクエストを表示する前に、アプリ側でカスタムされたpermission requestを表示することはNG
* ただし、なぜユーザーデータへのアクセスを要求するのか、AppTrackingTransparencyのリクエストを表示する前にユーザーに伝えることは可能
 
と解釈しました。要するに、なぜ要求するかの説明はOKだが、リクエストを許可してくださいと要求するのがNGで、今回文言に「許可してください」という文章が入っていたため、リジェクトをいただいたと捉えました。

文言を修正することで解決しそうではありましたが、確認ポップアップを挟むことで許諾率の向上があったとは言えなかったため（後述）、確認ポップアップ消去という判断をとり、審査を通過することができました。

# 確認ポップアップの効果
結論を言うと、あくまで我々のサービスでの話しですが、**確認ポップアップを挟んでいた時と比較して、確認ポップアップを挟んでいない時の方が、AppTrackingTransparencyのリクエストの許諾率が高い**結果となりました。

確認ポップアップ自体は「カスタマイズした広告をオンにする」ボタンを半数のユーザに押していただけていたのですが、その後のAppTrackingTransparencyのリクエストの許諾率が異常に低く、結果的に許諾率が低下していました。

通知リクエストの時もみられた現象ですが、標準アラートは他アプリでも見慣れたアラートであるため、そのまま表示してあげた方が理解が早い、と言う説が考えられるかなと思いました。

参考になりましたら、LGTMをよろしくお願いします。
また、他の事例も知りたいのでコメント等で共有していただけると嬉しいです、よろしくお願いします！