コンテンツにスキップ

未成年者保護法令への準拠

Hive SDKは、未成年者保護のためのApp Store責任法およびブラジルECAへの対応として、ユーザー年齢を確認できるAge rangeモジュールを提供します。 ユーザー年齢確認を義務付ける法令の施行に伴い、マーケットプレイス経由でアプリを配布する開発者は Age range モジュールを適用し、ユーザー年齢範囲の確認や保護者同意の取得が可能です。

Note

Age range モジュールは Android / iOS ターゲットの Hive SDK v4 26.0.1 から提供され、年齢確認法が施行されるまでは必須適用ではありません。

iOSでユーザー年齢範囲を確認するには、次の条件を満たす必要があります。

  • Xcode 26.2 以上
  • iOS 26.2 以上で機能を提供
Warning

年齢確認法の施行前に実ユーザー環境で Age range モジュールを追加して getAgeRange API を呼び出すと、各マーケットプレイス(Google Play、Apple App Store)からエラー応答を受信します。 そのため施行前は Age range モジュールを追加しなくても問題なく、追加して呼び出す場合でも PENDING / DENIED など明確な動作エラー以外は無視できます。
施行前に正常応答を確認するには Apple 提供のサンドボックステスト API / ツールを使用してください。詳細は Apple公式告知 を参照してください。

法施行後は Age range モジュールを追加して getAgeRange API を呼び出すことで、ユーザーステータスと年齢情報をリアルタイムで受信できます。(別途案内予定)

本ガイドでは、Hive SDK が提供する Age range モジュールの動作概要、利用方法、テスト方法を説明します。


Age range 動作概要

Age range モジュールで提供する機能は次のとおりです。

マーケットプレイス別フロー

Age range モジュールのマーケットプレイス別フローは次のとおりです。

  • Google Play

  • Amazon AppstoreSamsung Galaxy Store

  • Apple App Store

Note
  • 本ガイドでは、App Store責任法対応として保護者同意が確認できない場合はゲーム進行不可と案内していますが、実際の動作は各ゲームのサービス方針・運用判断により異なる場合があります。
  • ブラジルECA法は保護者承認可否とは無関係です。ユーザー年齢確認のみ実施してください。


事前準備: Age range モジュール追加

Age Rangeモジュールを使用する準備として、各SDKの開発エンジンとターゲットOSに応じて、Age Rangeモジュールを追加または削除してください。

SDK ネイティブ Android

年齢範囲モジュールを追加

  1. SDK共通設定で市場を設定します。
  2. モジュールレベルの build.gradle ファイルに以下を追加します:
    // アプリストアの責任法遵守 - Google
    implementation "com.com2us.android.hive:hive-agerange-google-agesignals"
    

年齢範囲モジュールを削除する

モジュールレベルの build.gradle ファイルから以下を削除してください:

// App Store Accountability Law compliance - Google
// implementation "com.com2us.android.hive:hive-agerange-google-agesignals" // Remove this line when not in use

SDK ネイティブ iOS

年齢範囲モジュールを追加

  1. Podfileの例コードを参照し、App Store Accountability Lawに関連する内容を追加してください:

    target 'HIVE_GAME_COOL' do
      pod 'HiveAgeRangeApple', '${SDK_VERSION}'
          # 26.3.4以降、「アプリ内の重要な変更事項の通知と承認リクエスト」を選択して適用可能
          pod 'HiveAgeRangePermissionApple', '${SDK_VERSION}'  # (26.3.4+ Optional)
    end
    

  2. SDKネイティブiOS環境において、宣言された年齢範囲の権限を以下の順序で追加します:

    1. Xcodeプロジェクトウィンドウのプロジェクトナビゲーターで、開発者プロジェクトを選択します。
    2. TARGETSリストから開発者アプリを選択します。
    3. Signing & Capabilitiesタブをクリックします。
    4. Signing & Capabilitiesタブの左上隅にある**+ Capability**ボタンをクリックします。
    5. リストから**Declared Age Range**を選択して追加します。
    6. Signing & Capabilitiesリストに追加された**Declared Age Range**を確認できます。

年齢範囲モジュールを削除する

Podfileの例コードを参照し、App Store Accountability Lawに関連する内容を削除してください:

target 'HIVE_GAME_COOL' do
end

SDK Cocos2d-x Android

SDKネイティブAndroidと同じです。

SDK Cocos2d-x iOS

SDK Native iOSと同じです。

SDK Unity Android

AndroidターゲットのUnity環境でAge Rangeモジュールを使用するには、以下の順序で設定します:

  1. Hive > ExternalDependency メニューをクリックします。
  2. Market Settings の下でサポートされている市場に対して Age Range [Market] アイテムをチェックします。AgeRange モジュールは、サポートしたい市場モジュールを必要とします。

    ※ Age Rangeモジュールを使用したくない場合は、チェックを外してください。
    AgeRange GoogleおよびApple AgeRangeモジュールを使用しない場合は、チェックを外すことができます。**Age Range Amazon**と**Age Range Samsung**モジュールは、それぞれの上位レベル市場モジュールを含める際に自動的に含まれます。

SDK Unity iOS

App Store責任法関連のシステムAPIは、iOS 26.2以上でのみサポートされます。

  1. [Hive > ExternalDependency] メニューをクリックします。
  2. Market Settings設定の下で、対応するマーケットの Age Range [Market] 項目にチェックを入れます。Age Rangeモジュールには、利用したいマーケットモジュールが必要です。

    ※ Age Rangeモジュールを使用しない場合は、チェックを外します。
    Age Range AppleAge Range Permission Apple モジュールを使用しない場合は、チェックを外せます。

iOSターゲットのUnity環境で年齢範囲モジュールを使用するには、以下の順序で宣言された年齢範囲の権限を追加します。Unityエディタを使って簡単に設定できます。

  1. Unityのトップメニューから**Hive**を選択します。
  2. **Build project post process setting > iOS**を選択します。
  3. Hive PostProcess Editor(iOS) で Age Range チェックボックスを選択します。
  4. iOS project export 後に、Signing & Capabilities リストに追加された Declared Age Range を確認できます。

SDK アンリアルエンジン Android

AndroidターゲットのUnreal Engine環境でAge Rangeモジュールを使用するには、次の順序で設定します:

  1. Unreal Editorを選択 → 編集 → プロジェクト設定メニューを開きます。\n
  2. プロジェクト設定の左パネルからHive SDK → 依存関係 → Androidを選択します。\n
  3. Hiveモジュール → AgeRangeを有効にするをチェックします。\n

    ※ AgeRangeモジュールを使用したくない場合は、チェックを外してください。

SDK Unreal Engine iOS

iOSターゲットのUnreal Engine環境でAge Rangeモジュールを使用するには、次の順序で設定します:

  1. Unreal Editor を選択 → 編集 → プロジェクト設定。
  2. プロジェクト設定の左パネルから Hive SDK → 依存関係 → iOS を選択します。
  3. Hive モジュール → AgeRange を有効にします。

    ※ AgeRangeモジュールを使用したくない場合は、チェックを外してください。

  4. Unreal Engine環境で、*IOSExport.cs*ファイルを修正して、宣言された年齢範囲の権限を追加します。
    Engine/Source/Programs/UnrealBuildTool/Platform/IOS/IOSExport.csファイルで、'Add'と'Add End'の間に行を追加します。

    Text.AppendLine( "<dict>");
    Text.AppendLine( "\t<key>get-task-allow</key>");
    Text.AppendLine(string.Format( "\t<{0}/>", bForDistribution ? "false": "true"));
    
    // 追加
    // 年齢範囲モジュールを使用するために必要な項目です。
    Text.AppendLine("\t<key>com.apple.developer.declared-age-range</key>");
    Text.AppendLine("\t<true/>");
    // 追加終了
    
        if (bCloudKitSupported) {
                if (iCloudContainerIdentifiersXML != ""
    

エンタitlementテンプレートを修正する (Unreal Engine 5)

Note

Unreal Engine 5 環境の Hive SDK では、IOSExport.cs ファイルを修正する代わりに *.entitlements テンプレートを使用して、宣言された年齢範囲の権限を追加できます。

あなたのUnreal Engine 5プロジェクトに、以下に示すように_.entitlements_テンプレートを使用してDeclared Age Rangeの権限を追加します。既存の_.entitlements_テンプレートにキーと値を追加してください。

<key>com.apple.developer.declared-age-range</key>
<true/>

entitlements テンプレートがない場合は、Plugins/HIVESDK/Source/HiveSDKiOS/template/ パス下の HIVESDKV4Tester.entitlements ファイルを参照できます。

ユーザーの年齢範囲と承認状況をリクエスト

ランタイムアプリでgetAgeRange APIを呼び出して、ユーザーの年齢と親の承認状況を確認してください。このコンプライアンスに従う法律に加えて、アプリに別の年齢確認プロセスがある場合は、最初にgetAgeRange APIを呼び出して年齢を確認することをお勧めします。

getAgeRange APIを呼び出すと、年齢確認法の対象となる地域に居住するユーザーのステータスデータuserStateと年齢範囲がレスポンスとして返されます。 適用される管轄区域に対して返されるデフォルトの年齢範囲は以下の通りであり、地域の要件に応じて変更される可能性があります:

  • 0~12歳
  • 13~15歳
  • 16~17歳
  • 18歳以上

getAgeRange APIを呼び出す

以下は、ユーザーの年齢範囲を要求するためにgetAgeRange APIを呼び出す例のコードです。

API リファレンス: Unity ®

using hive;

AuthV4.getAgeRange((ResultAPI result, AgeRange ageRange) => {    
        if (result.isSuccess()) {    
                // API call success    
        }    
});

APIリファレンス: C++

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
using namespace std;
using namespace hive;

AuthV4::getAgeRange([=](ResultAPI const & result, AgeRange const & ageRange) {
        if (result.isSuccess()) {    
                // API call success    
        }
});

APIリファレンス: Kotlin

import com.hive.AuthV4;
import com.hive.ResultAPI;

AuthV4.getAgeRange(object : AuthV4.AuthV4GetAgeRangeListener {
        override fun onAuthV4GetAgeRange(result: ResultAPI, ageRange: AuthV4.AgeRange?) {
                if (result.isSuccess) {    
                        // API呼び出し成功
                } 
        }
})

API リファレンス: Java

import com.hive.AuthV4;
import com.hive.ResultAPI;

AuthV4.getAgeRange((resultApi, ageRange) -> {
        if (result.isSuccess()) {
                // API呼び出し成功  
        }
});

API リファレンス: Swift

import HIVEService    

AuthV4Interface.getAgeRange() { result, ageRange in    
        if result.isSuccess() {    
                // API呼び出し成功    
        }    
}

APIリファレンス: Objective-C

#import <HIVEService/HIVEService-Swift.h>

[HIVEAuthV4 getAgeRange:^(HIVEResultAPI *result, HIVEAgeRange *ageRange) {
        if ([result isSuccess]) {
                // API call success    
        }    
}];
#include "HiveAuthV4.h"

FHiveAuthV4::GetAgeRange(FHiveAuthV4OnGetAgeRangeDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveAuthV4AgeRange& AgeRange) {
        if (Result.IsSuccess()) {
                        // API call success
        }
}));

getAgeRange API呼び出しが成功した場合

ゲームアプリでgetAgeRange APIをリクエストした後、レスポンス値userStateに応じたゲームアプリの操作フローは以下の通りです:

  • ** UNKNOWNVERIFIED、またはSUPERVISEDのいずれか** : アプリを進め、年齢に適したコンテンツを提供します * SUPERVISEDの際に重要なアプリ内変更を通知する場合 : Apple App Storeで配信されているゲームに対してのみ、showAgeRangeUpdatePermission APIを呼び出します
  • SUPERVISED_APPROVAL_PENDINGまたはSUPERVISED_APPROVAL_DENIED : * 未成年者がアプリを引き続き使用するための親の承認がまだ保留中であるか、拒否されています。年齢を確認し、アプリを進めることを許可します。
  • REQUIRED : ユーザーの年齢が該当する管轄区域および地域で確認されていません。アプリが年齢を確認できるように、ユーザーにマーケットプレイスアプリまたはデバイス設定で年齢情報を共有するように案内します。

getAgeRange API呼び出しの失敗時

ゲームアプリでgetAgeRange APIをリクエストした後、呼び出しが失敗した場合、次のResultAPIの失敗コードが返されます:

/*
 * RESPONSE_FAIL, NETWORK, DEVELOPER_ERROR, NOT_SUPPORTED
 */
ResultAPI.isSuccess() == false

API呼び出しエラーは、最新バージョンでないマーケットプレイスアプリを使用するなど、さまざまな理由で発生する可能性があります。

セッション中にエラーが発生した場合は、API呼び出しの最大リトライ回数を超えた場合に通話を終了するなど、ユーザーの環境への影響を最小限に抑えるように実装してください。

サンプル getAgeRange API コールレスポンス (Apple App Store)

Apple App StoreでgetAgeRange APIを呼び出すと、年齢範囲の共有を要求するポップアップが表示されます。

年齢範囲を共有することを選択したユーザーのみが、年齢範囲と承認状況を確認できます。拒否された場合、REQUIREDステータスが受信されます。

getAgeRange APIのレスポンスデータ

getAgeRange APIのレスポンスフィールドの説明は以下の通りです。各フィールドの値を利用することで、年齢に基づいたゲームプロセスを提供できます。

レスポンス値は変更される可能性があります。最新の値を取得するには、アプリが開くときにAPIレスポンスをリクエストしてください。

レスポンスフィールド 説明
userState VERIFIED ユーザーは18歳以上です。
SUPERVISED ユーザーは親が年齢範囲を設定した監視アカウントを持っています。ageLowerageUpperを使用してユーザーの年齢範囲を確認してください。
SUPERVISED_APPROVAL_PENDING ユーザーは監視アカウントを持っており、監視している親がまだ1つ以上の保留中の重要な変更を承認していません。ageLowerageUpperを使用してユーザーの年齢範囲を確認してください。mostRecentApprovalDateを使用して最も最近承認された重要な変更を確認してください。
SUPERVISED_APPROVAL_DENIED ユーザーは監視アカウントを持っており、監視している親が1つ以上の重要な変更の承認を拒否しました。ageLowerageUpper、およびmostRecentApprovalDateを使用して最も最近承認された重要な変更を確認してください。
UNKNOWN ユーザーは年齢確認の対象外です。ユーザーは適用される管轄区域および地域の外にいる可能性があるか、18歳以上または未満である可能性があります。'Console > Provisioning > SDK Settings'で'User Age Verification'を'Do not verify'に設定すると、UNKNOWNレスポンスが返されます。
REQUIRED ユーザーは適用される管轄区域および地域で確認または監視されていません。これらのユーザーは18歳以上または未満である可能性があります。年齢確認を受けるには、ユーザーにデバイス設定とマーケットプレイスアプリを訪問してステータスを確認するように依頼してください。
ageLower 0から18 監視ユーザーの年齢範囲の下限(含む)。ageLowerageUpperを使用してユーザーの年齢範囲を確認してください。
-1 userStateがUNKNOWNまたはREQUIREDです。
ageUpper 2から18 監視ユーザーの年齢範囲の上限(含む)。ageLowerageUpperを使用してユーザーの年齢範囲を確認してください。
-1 ユーザーは18歳以上であるか、userStateがUNKNOWNまたはREQUIREDです。
mostRecentApprovalDate 日付スタンプ 最も最近承認された重要な変更の日付。
例) "2023-07-01T00:00:00.008Z"
Apple App Storeではサポートされていません。
Samsung Galaxy Storeでは、YYYY-MM-DD形式でデータが返されます。
空(空白の値) userStateがSUPERVISEDであり、提出された重大な変更がない場合。またはuserStateがUNKNOWNまたはREQUIREDです。
Apple App Storeではサポートされていません。
ageRangeId App Store生成ID マーケットプレイスが生成した識別子ID。
Google Play Store : 監視ユーザーのインストールにGoogle Playが割り当てたID、すなわちinstallID。アプリ承認の取り消しを通知するために使用されます。 アプリ承認取り消しのドキュメントを確認してください。
Amazon Appstore : AmazonアカウントのuserId
Apple App Store : サポートされていません。
Samsung Galaxy Store: Samsung Galaxy Storeが生成したID
空(空白の値) userStateがUNKNOWNまたはREQUIREDです。
Apple App Storeではサポートされていません。


アプリ内の重要な変更通知と承認リクエスト

特定の法域および地域の規制に従い、ゲームアプリで以下の変更が発生した場合、ゲームアプリは変更について親または保護者に通知し、未成年者がアプリを使用し続けるための承認を求めなければなりません。

  • 収集、保存、または共有されるデータの変更
  • 年齢評価の変更
  • 新しいアプリ内購入または広告機能の追加
  • ユーザーエクスペリエンスの変更など

ゲームアプリは、変更を通知するタイミングを決定し、承認を要求できます。各マーケットプレイスの変更通知方法は以下の通りです:

ShowAgeRangeUpdatePermission API

Apple App Storeマーケットに配布するアプリの場合、アプリで直接 showAgeRangeUpdatePermission API を呼び出して、保護者(親)に重要な変更事項を通知し、承認をリクエストします。

Hive SDK 26.3.4から showAgeRangeUpdatePermission API を使用するには、HiveAgeRangePermissionApple モジュールを追加する必要があります。詳細は SDK Native iOS を参照してください。

以下は、showAgeRangeUpdatePermission APIを呼び出すための例のコードです。

API リファレンス: Unity ®

using hive;

String description = "このアップデートは、ビデオ通話と位置情報共有機能を追加します。";

AuthV4.showAgeRangeUpdatePermission(description, (ResultAPI result, AgeRange ageRange) => {    
    if (result.isSuccess()) {    
        // API call success    
    }    
});

APIリファレンス: C++

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
using namespace std;
using namespace hive;

std::string description = "このアップデートでは、ビデオ通話と位置情報共有機能が追加されます。";

AuthV4::showAgeRangeUpdatePermission(description, [=](ResultAPI const & result, AgeRange const & ageRange) {
    if (result.isSuccess()) {    
        // API call success    
    }    
});

API リファレンス: Kotlin

import com.hive.AuthV4;
import com.hive.ResultAPI;

val description: String = "このアップデートは、ビデオ通話と位置情報共有機能を追加します。"

AuthV4.showAgeRangeUpdatePermission(description, object : AuthV4.AuthV4GetAgeRangeListener {
    override fun onAuthV4GetAgeRange(result: ResultAPI, ageRange: AuthV4.AgeRange?) {
        if (result.isSuccess) {    
            // API call success
        } 
    }
})

API リファレンス: Java

import com.hive.AuthV4;
import com.hive.ResultAPI;

String description = "このアップデートでは、ビデオ通話と位置情報共有機能が追加されます。";

AuthV4.showAgeRangeUpdatePermission(description, (resultApi, ageRange) -> {
    if (result.isSuccess()) {
        // API call success  
    }
});

APIリファレンス: Swift

import HIVEService    

let description = "このアップデートでは、ビデオ通話と位置情報共有機能が追加されます。"

AuthV4Interface.showAgeRangeUpdatePermission(description) { result, ageRange in    
    if result.isSuccess() {    
        // API call success    
    }    
}

API リファレンス: Objective-C

#import <HIVEService/HIVEService-Swift.h>

NSString *description = "このアップデートでは、ビデオ通話と位置情報共有機能が追加されます。";

[HIVEAuthV4 showAgeRangeUpdatePermission: description handler:^(HIVEResultAPI *result, HIVEAgeRange *ageRange) {
    if ([result isSuccess]) {
        // API呼び出し成功    
    }    
}];
#include "HiveAuthV4.h"

FString Description = TEXT("このアップデートは、ビデオ通話と位置情報共有機能を追加します。");

FHiveAuthV4::ShowAgeRangeUpdatePermission(Description, FHiveAuthV4OnShowAgeRangeUpdatePermissionDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveAuthV4AgeRange& AgeRange) {
    if (Result.IsSuccess()) {
        // API call success
    }
}));

親の承認取り消し通知

アプリ内で親または保護者が重要な変更通知を承認した後でも、後で承認をキャンセルすることができます。承認が取り消されると、未成年のユーザーはアプリにアクセスできなくなります。

親または保護者が承認を取り消すと、各マーケットプレイスを通じて取り消し通知を確認する方法は次のとおりです:

  • Google Play: installID リストを Age Signals ページからダウンロードすることで、取り消しを確認できます。 * Google Play の installID は 3 か月間有効で、その後削除されます。
  • Apple App Store: 承認取り消しに関する通知を送信します。
  • Amazon Appstore: 開発者コンソールのレポートセクションから Amazon の userId をダウンロードすることで、取り消しを確認できます。
  • Samsung Galaxy Store: 保護者の承認撤回通知は別途届かないため、getAgeRagne APIを呼び出して返された状態値で確認できます。


年齢範囲テスト

Hive SDKは、年齢確認法が実施されているかどうかに関わらず、getAgeRange APIをリクエストした際に通常の応答を受け取ることができるテスト環境とテストケースを提供します。

年齢範囲テスト環境とテストケースは、Androidターゲット開発環境でのみ利用可能であり、デバッグモード設定を通じてAPIの動作をシミュレートできます。

Note

Age Range機能をiOSターゲット開発環境でテストするには、Appleが提供するサンドボックステストツールを使用できます。Appleのサンドボックスアカウントでログインしてテストしてください。

デバッグモードを有効にする

Androidターゲット開発環境でデバッグモードを設定するには、次のコマンドを実行します。デバッグモードはHive ZoneType.SANDBOXで動作します。

$ adb shell setprop debug.hive.agerange.testcase 1~11

ゲームアプリの動作を確認するために、ユニットテストまたは統合テストのみにデバッグモード設定を使用してください。

テストケースによるデータ応答

Androidターゲット開発環境でデバッグモードを設定した後、各テストケースに対してGoogle Playストアから返されるデータレスポンスは次のとおりです:

テストケース ユーザーステータス 年齢下限 年齢上限 最終承認日 年齢範囲ID 説明
1 確認済み 18 -1 年齢が確認された18歳以上のユーザーへのレスポンス。
2 必要 -1 -1 年齢確認および同意状況が確認できないユーザーへのレスポンス。
3 監視下 0 12 2026-01-01T07:00:00.008+0900 550e8400-e29b-41d4-a716-446655441111 0歳から12歳(含む)のユーザーへのレスポンス。
4 監視下 13 15 2026-01-01T07:00:00.008+0900 550e8400-e29b-41d4-a716-446655441111 13歳から15歳(含む)のユーザーへのレスポンス。
5 監視下 16 17 2026-01-01T07:00:00.008+0900 550e8400-e29b-41d4-a716-446655441111 16歳から17歳(含む)のユーザーへのレスポンス。
6 承認拒否された監視下 0 12 2026-01-01T07:00:00.008+0900 550e8400-e29b-41d4-a716-446655441111 同意が保留中または取得されていない18歳未満のユーザーへのレスポンス。
7 不明 -1 -1 年齢確認法が適用されないすべての状況へのレスポンス。
8 不明 -1 -1 APIがResultAPI.RESPONSE_FAILステータスを返すときのレスポンス。(APP_NOT_OWNED)
9 不明 -1 -1 APIがResultAPI.RESPONSE_FAILステータスを返すときのレスポンス。(CLIENT_TRANSIENT_ERROR)
10 不明 -1 -1 APIがResultAPI.RESPONSE_FAILステータスを返すときのレスポンス。(INTERNAL_ERROR)
11 不明 -1 -1 APIがResultAPI.RESPONSE_FAILステータスを返すときのレスポンス。(API_NOT_AVAILABLE)