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 から返されるデフォルトの年齢層をカスタマイズするには、アプリの最低年齢を指定します。
- Google Play Console の [年齢シグナル] ページに移動します。
- [カスタム年齢層] タブで、アプリの最低年齢を 3 つまで入力します。最低年齢は 2 歳以上離れている必要があり、年に 1 回変更できます。
- [Save] をクリックします。
年齢シグナルのレスポンス
Play Age Signals API(ベータ版)のレスポンスには、次のフィールドと値が含まれます。値は変更される場合があります。最新の値が必要な場合は、アプリを開いたときに API レスポンスをリクエストします。デベロッパーは、これらのシグナルを使用して年齢に応じたエクスペリエンスを提供する必要があります。
| レスポンス フィールド | 値 | 説明 |
|---|---|---|
userStatus |
確認済み | Google は、政府機関発行の身分証明書、クレジット カード、顔の年齢推定など、商業的に合理的な方法を使用してユーザーの年齢を確認しました。userStatus が VERIFIED の場合、他のフィールドは無視してかまいません。ageLower と ageUpper を使用して、ユーザーの年齢層を特定します。 |
| DECLARED | ユーザーの年齢は、ユーザー、保護者、または法定後見人によって申告されました。ageLower と ageUpper を使用して、ユーザーの年齢層を特定します。 |
|
| 管理対象 | ユーザーは、保護者が年齢を設定した管理対象の Google アカウントを使用している。ageLower と ageUpper を使用して、ユーザーの年齢層を特定します。mostRecentApprovalDate を使用して、承認された最後の重大な変更を特定します。 |
|
| SUPERVISED_APPROVAL_PENDING | ユーザーは管理対象の Google アカウントを持っており、管理している保護者が 1 つ以上の保留中の重大な変更をまだ承認していません。ageLower と ageUpper を使用して、ユーザーの年齢層を特定します。mostRecentApprovalDate を使用して、承認された最後の重大な変更を特定します。 |
|
| SUPERVISED_APPROVAL_DENIED | ユーザーが管理対象の Google アカウントを使用しており、管理している保護者が 1 つ以上の重大な変更を承認しなかった。
ageLower と ageUpper を使用して、ユーザーの年齢層を特定します。mostRecentApprovalDate を使用して、承認された最後の重大な変更を特定します。 |
|
| UNKNOWN | ユーザーの年齢が不明で、ユーザーが該当する法域または地域に居住している。
米国の州にのみ適用: Google Play から年齢シグナルを取得するには、ユーザーに Google Play ストアにアクセスしてステータスを解決するよう依頼します。 |
|
null |
または、ユーザーが該当する管轄区域または地域に居住していない。 またはユーザーがアプリと年齢を共有していない。 |
|
ageLower |
0 ~ 18 | 管理対象ユーザーの年齢範囲の下限(含む)。ageLower と ageUpper を使用して、ユーザーの年齢層を特定します。 |
null |
userStatus が不明または null。 |
|
ageUpper |
2 ~ 18 | 管理対象ユーザーの年齢範囲の上限(境界値を含む)。ageLower と ageUpper を使用して、ユーザーの年齢層を特定します。 |
null |
または userStatus が管理対象で、ユーザーの保護者が証明した年齢が 18 歳以上である。または userStatus が不明か null です。 |
|
mostRecentApprovalDate |
Datestamp | 承認された最新の重大な変更の effective from 日付。アプリがインストールされると、インストール前の最新の重要な変更の日付が使用されます。 |
null |
userStatus が監督されており、重要な変更が送信されていない。または userStatus が確認済み、不明、または null です。 |
|
installID |
Google Play が生成した英数字の ID。 | Google Play によって監視対象ユーザーのインストールに割り当てられる ID。アプリの承認が取り消されたことを通知する目的で使用されます。取り消されたアプリの承認に関するドキュメントを確認します。 |
null |
userStatus が確認済み、不明、または null である。 |
ブラジルのユーザー向けのレスポンス例
ブラジルでは、userStatus は DECLARED、UNKNOWN、null のいずれかのみです。
年齢を申告してアプリと共有しているユーザーの場合、次の情報を受け取ります。
userStatusはAgeSignalsVerificationStatus.DECLAREDになります。ageLowerは数値(13 など)になります。ageUpperは数値またはnullになります(例: 15)。- 他のレスポンス フィールドは
nullになります。
年齢が不明なユーザーの場合、次のような情報が返されます。
userStatusはAgeSignalsVerificationStatus.UNKNOWNになります。- 他のレスポンス フィールドは
nullになります。
アプリと年齢を共有していないユーザーの場合、次の情報が届きます。
userStatusはnullになります。- 他のレスポンス フィールドは
nullになります。
ユーザーの年齢を共有できるようになると、ユーザーのステータスが DECLARED に変わります。
米国の州のユーザーに対する回答例
米国の該当する州では、userStatus は VERIFIED、SUPERVISED、SUPERVISED_APPROVAL_PENDING、SUPERVISED_APPROVAL_DENIED、UNKNOWN、null のいずれかになります。
確認済みのユーザーには、次の情報が届きます。
userStatusはAgeSignalsVerificationStatus.VERIFIEDになります。ageLowerは数値(18 など)になります。ageUpperは、数値またはnullになります(例:null)。- 他のレスポンス フィールドは
nullになります。
管理対象ユーザーの場合、次の情報が返されます。
userStatusはAgeSignalsVerificationStatus.SUPERVISEDになります。ageLowerは数値(13 など)になります。ageUpperは数値またはnullになります(例: 15)。mostRecentApprovalDateは Java の日付オブジェクト(2026-01-01など)またはnullになります(大幅な変更が承認されていない場合)。installIDは、Google Play によって生成された英数字の ID(550e8400-e29b-41d4-a716-446655441111など)になります。
重大な変更の承認が保留中の監視対象ユーザーの場合、次の情報が届きます。
userStatusはAgeSignalsVerificationStatus.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 ストア アプリのバージョンが古い可能性があります。 考えられる解決策
|
はい |
| -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」と記載し、できるだけ多くの技術的な詳細情報(バグレポートなど)を含めてください。 | × |