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 の [年齢のシグナル] ページでアプリの 最低年齢を指定することで、アプリの最低年齢に応じてデフォルトの年齢層をカスタマイズすることもできます。
- Google Play Console の [年齢のシグナル] ページに移動します。
- [カスタムの年齢層] タブで、アプリの最低年齢を 3 つまで入力します。最低年齢は 2 歳以上離れている必要があり、年に 1 回変更できます。
- [保存] をクリックします。
返される年齢層は、デフォルトの API レスポンスをオーバーライドします。例:
Google Play Console で 1 つの最低年齢(15)を設定した場合:
- 0 ~ 14 歳の場合、
ageLower = 0とageUpper = 14が返されます。 - 15 歳以上の場合、
ageLower = 15が返されます。
- 0 ~ 14 歳の場合、
2 つの最低年齢(13 と 17)を設定した場合:
- 0 ~ 12 歳の場合、
ageLower = 0とageUpper = 12が返されます。 - 13 ~ 16 歳の場合、
ageLower = 13とageUpper = 16が返されます。 - 17 歳以上の場合、
ageLower = 17が返されます。
- 0 ~ 12 歳の場合、
3 つの最低年齢(11、13、15)を設定した場合:
- 0 ~ 10 歳の場合、
ageLower = 0とageUpper = 10が返されます。 - 11 歳または 12 歳の場合、
ageLower = 11とageUpper = 12が返されます。 - 13 歳または 14 歳の場合、
ageLower = 13とageUpper = 14が返されます。 - 15 歳以上の場合、
ageLower = 15が返されます。
- 0 ~ 10 歳の場合、
年齢のシグナルのレスポンス
Play Age Signals API(ベータ版)のレスポンスには、次のフィールドと値が含まれます。値は変更される場合があります。最新の値を取得するには、アプリを開いたときに API レスポンスをリクエストします。これらのシグナルを使用して、年齢に応じたエクスペリエンスを提供するのはデベロッパーの責任です。
| レスポンス フィールド | 値 | 説明 |
|---|---|---|
userStatus |
確認済み | Google は、政府発行の身分証明書、クレジット カード、顔の年齢推定など、商業上合理的な方法でユーザーの年齢を確認しました。userStatus が VERIFIED の場合、他のフィールドは無視できます。ageLower と ageUpper を使用して、ユーザーの年齢層を特定します。
|
| 申告済み | ユーザー、保護者、または法定後見人がユーザーの年齢を申告しました。
ageLower と ageUpper を使用して、ユーザーの年齢層を特定します。 |
|
| 管理対象 | ユーザーは、保護者が年齢を設定する管理対象の Google アカウントを持っています。
ageLower と ageUpper を使用して、ユーザーの年齢層を特定します。
mostRecentApprovalDate を使用して、承認された最新の重大な変更を特定します。 |
|
| 管理対象の承認待ち | ユーザーは管理対象の Google アカウントを持っていますが、管理している保護者が 1 つ以上の保留中の重大な変更をまだ承認していません。
ageLower と ageUpper を使用して、ユーザーの年齢層を特定します。
mostRecentApprovalDate を使用して、承認された最新の重大な変更を特定します。 |
|
| 管理対象の承認拒否 | ユーザーは管理対象の 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 |
日付スタンプ | 承認された最新の重大な変更の 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 | デバイス上に 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」と記載し、できるだけ多くの技術的な詳細情報(バグレポートなど)を含めてください。 | いいえ |