AppTrackingTransparency の対応
少し前に、AppTrackingTransparency の対応を行いましたので、その時の対応内容をメモしています。 他アプリへ反映する時のメモとして自分用に残しておきます。
結論を先に書くと
Expo のパッケージ「expo-tracking-transparency
」を使って簡単に対応できました。
ポップアップの出し方やテキストについては検討が必要ですが、必要な対応としては完了です。
対応が必要になったきっかけ
久しぶりにアプリをアップデートしようと思いストアに審査を申し込んだところ弾かれました。
ざっくりとは以下の内容です。Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing
が原因です。
App Store Connect
Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing
The app privacy information you provided in App Store Connect indicates you collect data in order to track the user, including Product Interaction, Advertising Data, Crash Data, Coarse Location, Device ID, and Performance Data. However, you do not use App Tracking Transparency to request the user’s permission before tracking their activity.
Starting with iOS 14.5, apps on the App Store need to receive the user’s permission through theAppTrackingTransparency framework before collecting data used to track them. This requirement protects the privacy of App Store users.
結構前から話題になっていた以下の件によるものです。
https://developer.apple.com/jp/news/?id=ecvrtzt2
アプリでのユーザー情報のトラッキングについて、ユーザーの同意が必要になるという方針です。 必要であれば、SDKに用意されているポップアップを使って権限のリクエストが必要になりました。
最近ではこの内容のテレビCMも見かけますね。
この件についてずっと対応していなかったので、今回のアップデート審査にて引っかかったということです。
対応内容
Expo を利用するなら以下のパッケージを使うことで簡単に対応できます。
https://docs.expo.io/versions/latest/sdk/tracking-transparency/
import { requestTrackingPermissionsAsync } from 'expo-tracking-transparency';
~~~
const { status } = await requestTrackingPermissionsAsync();
上記をアプリ起動後に呼ぶようにすれば、ポップアップが表示され権限のリクエストが行われます。
アプリインストール後、1 回のみリクエストが行われます
許可・拒否を一度選択すると次からはポップアップは表示されなくなります。 端末の設定から変更しない限り、権限も変更できないです。
Expo SDK 41以降でないと使えません
SDK のバージョンが40以下の場合はこのパッケージが使えません。 41以上にアップデートしておきましょう。
info.plist
https://docs.expo.io/versions/latest/config/app/#infoplist
権限リクエストを行う際の説明メッセージを設定する必要があります。
info.plist に設定する必要があり、Expo の場合は app.json
に以下のような記述を追加します。
"ios": {
"infoPlist": {
"NSUserTrackingUsageDescription": "「許可」することで表示される広告がユーザーに最適化された内容になります。",
}
},
Expo go での確認の際は上記メッセージが反映されておらず、デフォルトの英語メッセージが表示されている状態でした。 Expo go に設定されているテキストでリクエストメッセージが表示されていたようです。 自分のアプリをスタンドアローンでビルドしたものやストアでリリースしたものでは、意図通り info.plist に設定したメッセージが表示されることを確認しました。
App Store 再審査への提出
修正を行った後再審査へ提出します。 レビューで弾かれた際のメールに以下の記述がありますので注意しましょう。
If you track users, you must implement App Tracking Transparency and request permission before collecting data used to track. When you resubmit, indicate in the Review Notes where the permission request is located.
再審査を申請する際に権限のリクエストを追加した場所をReview Notes に示す必要がある様子です。 私はレビューメッセージに対する返信として、「アプリトップページに追加しました」という内容のメッセージを送った上で再申請を依頼しました。
おわりに
今回の対応が必要なことはずっと把握していたのですが後回しにしていました。 審査を行う時になって初めてやらないといけないことを思い出したので、何でも早めに対応しておくこを心がけたいです。
対応自体は簡単に済みました。実際に利用するユーザーの体験としてはもう少し検討の余地があります。 ただし、表示のさせ方などで審査に引っ掛かる場合があるようですので、注意して設計したいです。
表示の仕方やメッセージの内容など、その他にもいろいろありますが現時点ではこれだけの対応にしておきました。