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

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

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

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

Play Age Signals API は、Android 6.0(API レベル 23)以降を搭載したスマートフォン、折りたたみ式デバイス、タブレットでサポートされています。Play Age Signals 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 の [年齢のシグナル] ページでアプリの 最低年齢を指定することで、アプリの最低年齢に応じてデフォルトの年齢層をカスタマイズすることもできます。

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

返される年齢層は、デフォルトの API レスポンスをオーバーライドします。例:

  • Google Play Console で 1 つの最低年齢(15)を設定した場合:

    • 0 ~ 14 歳の場合、ageLower = 0ageUpper = 14 が返されます。
    • 15 歳以上の場合、ageLower = 15 が返されます。
  • 2 つの最低年齢(13 と 17)を設定した場合:

    • 0 ~ 12 歳の場合、ageLower = 0ageUpper = 12 が返されます。
    • 13 ~ 16 歳の場合、ageLower = 13ageUpper = 16 が返されます。
    • 17 歳以上の場合、ageLower = 17 が返されます。
  • 3 つの最低年齢(11、13、15)を設定した場合:

    • 0 ~ 10 歳の場合、ageLower = 0ageUpper = 10 が返されます。
    • 11 歳または 12 歳の場合、ageLower = 11ageUpper = 12 が返されます。
    • 13 歳または 14 歳の場合、ageLower = 13ageUpper = 14 が返されます。
    • 15 歳以上の場合、ageLower = 15 が返されます。

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

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

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

ageLowerageUpper を使用して、ユーザーの年齢層を特定します。
申告済み ユーザー、保護者、または法定後見人がユーザーの年齢を申告しました。

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

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

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

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

mostRecentApprovalDate を使用して、承認された最新の重大な変更を特定します。
管理対象の承認拒否 ユーザーは管理対象の 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 日付スタンプ 承認された最新の重大な変更の effective from 日付。アプリがインストールされると、インストール前の最新の重大な変更の日付が使用されます。
null いずれか: userStatus が管理対象で、重大な変更が送信されていない。

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

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

ブラジルでは、userStatusDECLAREDUNKNOWN、または null のいずれかになります。

年齢を申告してアプリと共有しているユーザーの場合、次の情報が返されます。

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

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

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

年齢がアプリと共有されていないユーザーの場合、次の情報が返されます。

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

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

米国の州のユーザー向けのレスポンス例

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

確認済みのユーザーの場合、次の情報が返されます。

  • 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 ストア アプリのバージョンが古い可能性があります。

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