Play 年齢シグナル API(ベータ版)を使用すると、利用規約に同意したことになり、すべての Google Play デベロッパー ポリシーを遵守することに同意したことになります。ユーザーのステータスと年齢層をリクエストするには、実行時にアプリから API を呼び出します。Play 年齢シグナル API は、Google Play が法律で年齢カテゴリ データの提供を義務付けられている地域に居住するユーザーのデータのみを返します。
Play は、該当する法域と地域で定義された年齢層に基づいて年齢層を返します。該当する法域と地域で API が返すデフォルトの年齢は 0 ~ 12 歳、13 ~ 15 歳、16 ~ 17 歳、18 歳以上ですが、地域の要件に基づいて変更される可能性があります。
Play 年齢シグナル API をアプリに統合する
Play 年齢シグナル API をアプリに統合するには、アプリの build.gradle
ファイルに次の依存関係を追加します。
implementation 'com.google.android.play:age-signals:0.0.1-beta01'
年齢のシグナルをリクエストする
年齢シグナルのリクエストを行う例を次に示します。
// 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.
}
});
年齢シグナルは、Google Play によってデバイス上のユーザーごとに保存されます。管理対象の Google アカウントを持つユーザーが新しい年齢層に達すると、Google Play は、ユーザーの誕生日の 2 ~ 8 週間以内に、そのユーザーのキャッシュに保存された年齢シグナルを自動的に更新します。
(省略可)カスタムの年齢層を受け取る
該当する法域と地域で API が返すデフォルトの年齢層は、0 ~ 12 歳、13 ~ 15 歳、16 ~ 17 歳、18 歳以上です。これらの年齢層は、地域の要件に基づいて今後変更される可能性があります。
または、アプリの最低年齢に合わせて年齢層をカスタマイズするには、Google Play Console の [年齢シグナル] ページでアプリの最低年齢を指定します。Age Signals API は、カスタマイズされた年齢層を返します。たとえば、年齢の下限として 9 歳、15 歳、17 歳を指定した場合、14 歳のユーザーは 10 ~ 15 歳の年齢範囲に該当します。最低年齢は 2 歳以上離れている必要があり、年に 1 回変更できます。
Age Signals API から返される年齢層をカスタマイズするには、アプリの最低年齢を指定します。
- Google Play Console の [年齢シグナル] ページに移動します。
- [アプリの最低年齢] タブで、アプリの最低年齢を 3 つまで入力します。
- [Save] をクリックします。
年齢シグナルのレスポンス
Play 年齢シグナル API(ベータ版)のレスポンスには、次のフィールドと値が含まれます。値は変更される場合があります。最新の値を取得する場合は、アプリを開いたときに API レスポンスをリクエストします。これらのシグナルを使用して年齢に適したエクスペリエンスを提供するのは、デベロッパーの責任です。
レスポンス フィールド | 値 | 説明 |
---|---|---|
userStatus |
確認済み | ユーザーが 18 歳以上である。Google は、政府機関発行の身分証明書、クレジット カード、顔の年齢推定など、商業的に合理的な方法を使用してユーザーの年齢を確認しました。 |
管理対象 | ユーザーは、保護者が年齢を設定している管理対象の Google アカウントを使用している。ageLower と ageUpper を使用して、ユーザーの年齢層を特定します。 |
|
SUPERVISED_APPROVAL_PENDING | ユーザーが管理対象の Google アカウントを使用しており、保護者が保留中の重大な変更を 1 つ以上承認していない。ageLower と ageUpper を使用して、ユーザーの年齢層を特定します。mostRecentApprovalDate を使用して、承認された最後の重要な変更を特定します。 |
|
SUPERVISED_APPROVAL_DENIED | ユーザーが管理対象の Google アカウントを使用しており、保護者が 1 つ以上の重大な変更を承認しなかった。ageLower と ageUpper を使用して、ユーザーの年齢層を特定します。mostRecentApprovalDate を使用して、承認された最後の重要な変更を特定します。 |
|
UNKNOWN | 該当する法域および地域で、ユーザーの年齢確認または保護者の管理が行われていない。これらのユーザーは 18 歳以上の場合も 18 歳未満の場合もあります。Google Play から年齢シグナルを取得するには、Google Play ストアにアクセスしてステータスを解決していただくようユーザーに依頼します。 | |
空(空の値) | 他のすべてのユーザーはこの値を返します。 | |
ageLower |
0 ~ 18 | 管理対象ユーザーの年齢範囲の下限(含む)。
ageLower と ageUpper を使用して、ユーザーの年齢層を特定します。 |
空(空の値) |
userStatus が不明または空です。 |
|
ageUpper |
2 ~ 18 | 管理対象ユーザーの年齢範囲の上限(境界値を含む)。ageLower と ageUpper を使用して、ユーザーの年齢層を特定します。 |
空(空の値) | または userStatus が管理対象で、ユーザーの保護者が証明した年齢が 18 歳以上である。または userStatus が検証済み、不明、または空です。 |
|
mostRecentApprovalDate |
Datestamp | 承認された最新の重要な変更の effective from 日付。アプリがインストールされると、インストール前の最新の重要な変更の日付が使用されます。 |
空(空の値) | userStatus が監督されており、大きな変更が送信されていない。または userStatus が検証済み、不明、または空です。 |
|
installID |
Google Play が生成した英数字の ID。 | Google Play によって管理対象ユーザーのインストールに割り当てられる ID。アプリの承認が取り消されたことを通知する目的で使用されます。取り消されたアプリの承認に関するドキュメントを確認します。 |
空(空の値) | userStatus が検証済み、不明、または空です。 |
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 | 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 からアプリを入手するようお客様に伝えます。 | × |
-100 | INTERNAL_ERROR | 不明な内部エラーです。終了条件として最大試行回数を設定した再試行手段を実装します。それでも問題が解決しない場合は、時間をおいてもう一度お試しいただくようお客様に伝えます。一貫して失敗する場合は、Google Play デベロッパー サポートにお問い合わせください。件名に「Play Age Signals API」と記載し、できるだけ多くの技術的な詳細情報(バグレポートなど)を含めてください。 | × |