React Native で「Guideline 5.1.2 – Legal – Privacy – Data Use and Sharing」のポリシー違反に対応する

App Store Connect に提出したアプリのレビューで落とされました。

The app privacy information you provided in App Store Connect indicates you collect data in order to track the user, including Advertising Data, Device ID, Product Interaction, Crash Data, Performance Data, and Coarse Location. 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 the AppTrackingTransparency framework before collecting data used to track them. This requirement protects the privacy of App Store users.

日本語訳は以下の通りになります。

ガイドライン5.1.2 – 法的 – プライバシー – データの使用および共有

App Store Connectで提供されたアプリのプライバシー情報は、広告データ、デバイスID、製品インタラクション、クラッシュデータ、パフォーマンスデータ、および粗い位置情報を含む、ユーザーを追跡するためのデータを収集していることを示しています。しかし、App Tracking Transparencyを使用して、ユーザーのアクティビティを追跡する前にユーザーの許可を求めていません。

iOS 14.5以降、App Store上のアプリは、トラッキングに使用されるデータを収集する前に、AppTrackingTransparencyフレームワークを通じてユーザーの許可を得る必要があります。この要件は、App Storeユーザのプライバシーを保護します。

対応方法は以下の通りです。

Next Steps

Here are two ways to resolve this issue:

  • If you do not currently track, or decide to stop tracking, update your app privacy information in App Store Connect. You must have the Account Holder or Admin role to update app privacy information.
  • 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.

Resources

  • Tracking is linking data collected from your app with third-party data for advertising purposes, or sharing the collected data with a data broker. Learn more about tracking.
  • See Frequently Asked Questions about the requirements for apps that track users.
  • Learn more about designing appropriate permission requests.

日本語訳は以下です。

次のステップ

この問題を解決するには、以下の2つの方法があります:

– 現在トラッキングを行っていない場合、またはトラッキングを停止する場合は、App Store Connectでアプリのプライバシー情報を更新してください。アプリのプライバシー情報を更新するには、アカウント所有者または管理者のロールが必要です。

– ユーザーをトラッキングする場合は、App Tracking Transparencyを実装し、トラッキングに使用するデータを収集する前に許可を求める必要があります。再送信するときは、レビューノートに許可要求の場所を記入してください。

リソース

– トラッキングとは、広告目的でアプリから収集したデータをサードパーティのデータとリンクさせること、または収集したデータをデータブローカーと共有することです。トラッキングの詳細については、こちらをご覧ください。
– ユーザーを追跡するアプリの要件に関するよくある質問を参照してください。
– 適切なパーミッションリクエストの設計については、こちらをご覧ください。

app.json に設定を追加

トラッキングを許可するかどうかをユーザーに確認するための設定を追加します。

app.json
  "react-native-google-mobile-ads": {
    "ios_app_id": "ca-app-pub-xxxxx~xxxxx",
    "delay_app_measurement_init": true,
    "user_tracking_usage_description": "This identifier will be used to deliver personalized ads to you."
  }

App.tsx に確認のダイアログを出す処理を追加します。

HTML
  const requestConsent = async () => {
    try {
      const consentInfo = await AdsConsent.requestInfoUpdate({
        debugGeography: AdsConsentDebugGeography.EEA,
      });

      const status = consentInfo.status;
      if (
        (consentInfo.isConsentFormAvailable && status === AdsConsentStatus.UNKNOWN) ||
        (consentInfo.isConsentFormAvailable && status === AdsConsentStatus.REQUIRED)
      ) {
        await AdsConsent.showForm();
      }
    } catch (err) {
      console.log(err);
    }
  };

  useEffect(() => {
    requestConsent();
  }, []);

Admob 側の「IDFA説明メッセージ」に対象のアプリ名を追加しないと、トラッキング許可のダイアログを表示できる状態にならないので、注意が必要です。

Failed to read publisher’s account configuration; try again later.

Failed to read publisher's account configuration; try again later. というエラーが出たときは、Admob で GDPR と IDFA メッセージを設定すれば解決します。

https://apps.admob.com/v2/privacymessaging

I fixed this error by logging into Admob and configuring my GDPR and IDFA messages here: https://apps.admob.com/v2/privacymessaging

After I configured and allowed those messages the error went away, and it worked even while displaying test ads on an emulator.

設定が完了したら以下のような画面になります。

一通り設定が終わり、ローカル端末で動作確認したら、再審査に出しましょう。