Play Age Signals API(ベータ版)を使用する

Play 年齢シグナル API(ベータ版)を使用すると、利用規約に同意し、すべての Google Play デベロッパー ポリシーを遵守することに同意したことになります。ユーザーのステータスと年齢範囲をリクエストするには、実行時にアプリから API を呼び出します。Play Age Signals API は、法律で年齢カテゴリ データの提供が義務付けられている地域に居住するユーザーのデータのみを返します。

Play は、該当する法域および地域で定義されている年齢層に基づいて年齢層を返します。該当する法域および地域で API から返されるデフォルトの年齢層は、0 ~ 12 歳、13 ~ 15 歳、16 ~ 17 歳、18 歳以上ですが、カスタムの年齢層が返されることもあります。Google Play は、ユーザーの誕生日の 2 ~ 8 週間後に、ユーザーの年齢シグナルのキャッシュを自動的に更新します。

Play Age Signals API をアプリに統合する

Play 年齢シグナル API は、Android 6.0(API レベル 23)以降を搭載したスマートフォン、折りたたみ式デバイス、タブレットでサポートされています。Play 年齢シグナル API をアプリに統合するには、アプリの build.gradle ファイルに次の依存関係を追加します。

implementation 'com.google.android.play:age-signals:0.0.3'

年齢のシグナルをリクエストする

年齢シグナルのリクエストを行う例を次に示します。

Kotlin

// Create an instance of a manager
val ageSignalsManager =
    AgeSignalsManagerFactory.create(ApplicationProvider.getApplicationContext())

// Request an age signals check
ageSignalsManager
    .checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnSuccessListener { ageSignalsResult ->
        // Store the install ID for later...
        val installId = ageSignalsResult.installId()

        if (ageSignalsResult.userStatus() == AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_DENIED) {
          // Disallow access...
        } else {
           // Do something else if the user is VERIFIED, DECLARED, SUPERVISED, etc.
        }
    }

Java

// Create an instance of a manager
AgeSignalsManager ageSignalsManager =
    AgeSignalsManagerFactory.create(ApplicationProvider.getApplicationContext());

// Request an age signals check
ageSignalsManager
    .checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnSuccessListener(
        ageSignalsResult -> {
          // Store the install ID for later...
          String installId = ageSignalsResult.installId();

          if (ageSignalsResult
              .userStatus()
              .equals(AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_DENIED)) {
            // Disallow access ...
          } else {
            // Do something else if the user is SUPERVISED, VERIFIED, etc.
          }
        });

(省略可)カスタムの年齢層を受け取る

API から返される、該当する法域および地域でのデフォルトの年齢層は、0 ~ 12 歳、13 ~ 15 歳、16 ~ 17 歳、18 歳以上です。

また、Google Play Console の [年齢シグナル] ページでアプリの最低年齢を指定することで、アプリの最低年齢に応じてデフォルトの年齢層をカスタマイズすることもできます。返される年齢範囲は、デフォルトの API レスポンスをオーバーライドします。たとえば、最低年齢を 9 歳、15 歳、17 歳と指定した場合、14 歳のユーザーは 10 ~ 15 歳の年齢層に分類されます。

Age Signals API から返されるデフォルトの年齢層をカスタマイズするには、アプリの最低年齢を指定します。

  1. Google Play Console の [年齢シグナル] ページに移動します。
  2. [カスタム年齢層] タブで、アプリの最低年齢を 3 つまで入力します。最低年齢は 2 歳以上離れている必要があり、年に 1 回変更できます。
  3. [Save] をクリックします。

年齢シグナルのレスポンス

Play Age Signals API(ベータ版)のレスポンスには、次のフィールドと値が含まれます。値は変更される場合があります。最新の値が必要な場合は、アプリを開いたときに API レスポンスをリクエストします。デベロッパーは、これらのシグナルを使用して年齢に応じたエクスペリエンスを提供する必要があります。

レスポンス フィールド 説明
userStatus 確認済み Google は、政府機関発行の身分証明書、クレジット カード、顔の年齢推定など、商業的に合理的な方法を使用してユーザーの年齢を確認しました。userStatusVERIFIED の場合、他のフィールドは無視してかまいません。

ageLowerageUpper を使用して、ユーザーの年齢層を特定します。
DECLARED ユーザーの年齢は、ユーザー、保護者、または法定後見人によって申告されました。

ageLowerageUpper を使用して、ユーザーの年齢層を特定します。
管理対象 ユーザーは、保護者が年齢を設定した管理対象の Google アカウントを使用している。

ageLowerageUpper を使用して、ユーザーの年齢層を特定します。

mostRecentApprovalDate を使用して、承認された最後の重大な変更を特定します。
SUPERVISED_APPROVAL_PENDING ユーザーは管理対象の Google アカウントを持っており、管理している保護者が 1 つ以上の保留中の重大な変更をまだ承認していません。

ageLowerageUpper を使用して、ユーザーの年齢層を特定します。

mostRecentApprovalDate を使用して、承認された最後の重大な変更を特定します。
SUPERVISED_APPROVAL_DENIED ユーザーが管理対象の Google アカウントを使用しており、管理している保護者が 1 つ以上の重大な変更を承認しなかった。

ageLowerageUpper を使用して、ユーザーの年齢層を特定します。

mostRecentApprovalDate を使用して、承認された最後の重大な変更を特定します。
UNKNOWN ユーザーの年齢が不明で、ユーザーが該当する法域または地域に居住している。

米国の州にのみ適用: Google Play から年齢シグナルを取得するには、ユーザーに Google Play ストアにアクセスしてステータスを解決するよう依頼します。
null または、ユーザーが該当する管轄区域または地域に居住していない。

またはユーザーがアプリと年齢を共有していない。
ageLower 0 ~ 18 管理対象ユーザーの年齢範囲の下限(含む)。

ageLowerageUpper を使用して、ユーザーの年齢層を特定します。
null
userStatus が不明または null
ageUpper 2 ~ 18 管理対象ユーザーの年齢範囲の上限(境界値を含む)。

ageLowerageUpper を使用して、ユーザーの年齢層を特定します。
null または userStatus が管理対象で、ユーザーの保護者が証明した年齢が 18 歳以上である。

または userStatus が不明か null です。
mostRecentApprovalDate Datestamp 承認された最新の重大な変更の effective from 日付。アプリがインストールされると、インストール前の最新の重要な変更の日付が使用されます。
null userStatus が監督されており、重要な変更が送信されていない。

または userStatus が確認済み、不明、または null です。
installID Google Play が生成した英数字の ID。 Google Play によって監視対象ユーザーのインストールに割り当てられる ID。アプリの承認が取り消されたことを通知する目的で使用されます。取り消されたアプリの承認に関するドキュメントを確認します。
null userStatus が確認済み、不明、または null である。

ブラジルのユーザー向けのレスポンス例

ブラジルでは、userStatusDECLAREDUNKNOWNnull のいずれかのみです。

年齢を申告してアプリと共有しているユーザーの場合、次の情報を受け取ります。

  • userStatusAgeSignalsVerificationStatus.DECLARED になります。
  • ageLower は数値(13 など)になります。
  • ageUpper は数値または null になります(例: 15)。
  • 他のレスポンス フィールドは null になります。

年齢が不明なユーザーの場合、次のような情報が返されます。

  • userStatusAgeSignalsVerificationStatus.UNKNOWN になります。
  • 他のレスポンス フィールドは null になります。

アプリと年齢を共有していないユーザーの場合、次の情報が届きます。

  • userStatusnull になります。
  • 他のレスポンス フィールドは null になります。

ユーザーの年齢を共有できるようになると、ユーザーのステータスが DECLARED に変わります。

米国の州のユーザーに対する回答例

米国の該当する州では、userStatusVERIFIEDSUPERVISEDSUPERVISED_APPROVAL_PENDINGSUPERVISED_APPROVAL_DENIEDUNKNOWNnull のいずれかになります。

確認済みのユーザーには、次の情報が届きます。

  • userStatusAgeSignalsVerificationStatus.VERIFIED になります。
  • ageLower は数値(18 など)になります。
  • ageUpper は、数値または null になります(例: null)。
  • 他のレスポンス フィールドは null になります。

管理対象ユーザーの場合、次の情報が返されます。

  • userStatusAgeSignalsVerificationStatus.SUPERVISED になります。
  • ageLower は数値(13 など)になります。
  • ageUpper は数値または null になります(例: 15)。
  • mostRecentApprovalDate は Java の日付オブジェクト(2026-01-01 など)または null になります(大幅な変更が承認されていない場合)。
  • installID は、Google Play によって生成された英数字の ID(550e8400-e29b-41d4-a716-446655441111 など)になります。

重大な変更の承認が保留中の監視対象ユーザーの場合、次の情報が届きます。

  • userStatusAgeSignalsVerificationStatus.SUPERVISED_APPROVAL_PENDING になります。
  • ageLower は数値(13 など)になります。
  • ageUpper は数値または null になります(例: 15)。
  • mostRecentApprovalDate は Java の日付オブジェクト(2026-01-01 など)または null になります(大幅な変更が承認されていない場合)。
  • installID は、Google Play によって生成された英数字の ID(550e8400-e29b-41d4-a716-446655441111 など)になります。

API エラーコードを処理する

アプリが Play Age Signals API リクエストを行い、呼び出しに失敗すると、アプリはエラーコードを受け取ります。これらのエラーは、Google Play ストア アプリが最新でないなど、さまざまな理由で発生する可能性があります。

再試行戦略

ユーザーがセッション中の場合は、エラーによってユーザー エクスペリエンスをできる限り妨げることがないよう、終了条件として最大試行回数を設定した再試行手段を実行することをおすすめします。

エラーコードの数値 エラーコード 説明 再試行可能
-1 API_NOT_AVAILABLE Play Age Signals API を使用できません。デバイスにインストールされている Google Play ストア アプリのバージョンが古い可能性があります。

考えられる解決策
  • Play ストアを更新するようにユーザーに依頼します。
はい
-2 PLAY_STORE_NOT_FOUND デバイス上に Play ストア アプリが見つかりません。Google Play ストアをインストールまたは有効にするようユーザーに依頼します。 はい
-3 NETWORK_ERROR 利用可能なネットワークが見つかりません。接続の確認をユーザーに依頼します。 はい
-4 PLAY_SERVICES_NOT_FOUND Play 開発者サービスを使用できないか、バージョンが古すぎます。Play 開発者サービスをインストール、更新、または有効にするようにユーザーに依頼します。 はい
-5 CANNOT_BIND_TO_SERVICE Play ストアでサービスにバインドできませんでした。デバイスにインストールされている Google Play ストアのバージョンが古いか、デバイスのメモリが過負荷になっていることが原因と考えられます。Google Play ストア アプリを更新するようにユーザーに依頼します。 指数バックオフで再試行します。 はい
-6 PLAY_STORE_VERSION_OUTDATED Google Play ストア アプリを更新する必要があります。 Play ストア アプリを更新するようにユーザーに依頼します。 はい
-7 PLAY_SERVICES_VERSION_OUTDATED Play 開発者サービスを更新する必要があります。Play 開発者サービスを更新するようにユーザーに依頼します。 はい
-8 CLIENT_TRANSIENT_ERROR クライアント デバイスで一時的なエラーが発生しました。終了条件として最大試行回数を設定した再試行手段を実装します。それでも問題が解決しない場合は、後でもう一度お試しいただくようお客様に伝えます。 はい
-9 APP_NOT_OWNED アプリが Google Play によってインストールされていない。Google Play からアプリを入手するようお客様に伝えます。 ×
-10 SDK_VERSION_OUTDATED Play 年齢シグナル SDK のバージョンはサポートされなくなりました。Play 年齢シグナル SDK の最新バージョンを使用する新しいバージョンにアプリを更新するようユーザーに依頼します。 ×
-100 INTERNAL_ERROR 不明な内部エラーです。終了条件として最大試行回数を設定した再試行手段を実装します。それでも問題が解決しない場合は、後でもう一度お試しいただくようお客様に伝えます。一貫して失敗する場合は、Google Play デベロッパー サポートにお問い合わせください。件名に「Play Age Signals API」と記載し、できるだけ多くの技術的な詳細情報(バグレポートなど)を含めてください。 ×