コンテンツにスキップ

コンプライアンス

コンプライアンスは、持続可能なビジネスとユーザー保護のためにゲームアプリが遵守しなければならない法的規制、ポリシー、および要件への対応を可能にするHive SDKが提供する機能です。

このガイドでは、Hive SDKコンプライアンスがサポートする法的、倫理的、行政的な規制事項とその適用方法について説明します。

アプリストア責任法に対応するためのユーザー年齢層確認

2026年1月1日より、テキサス、ユタ、ルイジアナなど複数の米国州において、マーケットプレイスがユーザー年齢を確認し、未成年者の場合は保護者(親権者)の承認を得たユーザーのみがゲームを続行できることを義務づける法律が施行されます。 これに伴い、これらの州のマーケットプレイスを通じてアプリを配布する開発者は、SDKが提供する**Age Range API**を使用してユーザーの年齢層を確認し、保護者の承認を要請する必要があります。

Note

このガイドは、2026年1月1日にテキサス州で発効する関連米国州の年齢確認法に準拠して作成されています。

Age Range APIが提供する機能は次のとおりです:

Warning

2026年1月1日まで、Age Range APIを呼び出すと例外応答を受信する場合があり、Apple App Storeを通じて配布された場合は応答がない可能性があります。

2026年1月1日以降、Age Range APIを呼び出すとリアルタイムの応答が返されます。


Age range API動作フロー

ゲームアプリがAge Range APIを要請した後、呼び出し成功または失敗に伴う動作フローは次のとおりです。

getAgeRange API呼び出し成功時

レスポンス値userStateに応じたゲームアプリの動作プロセスは次のとおりです:

  • UNKNOWNVERIFIEDSUPERVISEDのいずれか : アプリを進行し、年齢に適したコンテンツを提供
    • SUPERVISEDでアプリ内重要変更を通知する場合 : Apple App Storeを通じて配布されたゲームのみでshowAgeRangeUpdatePermission APIを呼び出し
  • SUPERVISED_APPROVAL_PENDINGまたはSUPERVISED_APPROVAL_DENIED :
    • 未成年者がアプリを継続使用することを許可する要請に対する保護者(親権者)承認がまだ保留中であるか拒否された状態で、年齢を確認しアプリを進行可能
  • REQUIRED : 該当管轄権・地域でユーザー年齢が確認されていない状態で、マーケットプレイスアプリやデバイス設定で年齢情報を共有するようユーザーを案内し、アプリで年齢確認が可能になるよう誘導

getAgeRange API呼び出し失敗時

アプリでAge Range APIを要請した後、呼び出しが失敗するとResultAPI失敗コードが受信されます。ResultAPI失敗コードの例は次のとおりです:

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

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

セッション中にエラーが発生した場合、最大API呼び出し再試行回数を超えたら呼び出しを終了するなど、ユーザー環境への干渉を最小限にする実装を行う必要があります。

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

Age Range APIがサポートする各マーケットプレイスのAPI要請および処理フローは次のとおりです。

  • Google Play**および**Amazon Appstore

  • Apple App Store

getAgeRange API

ランタイムアプリからgetAgeRange APIを呼び出してユーザーのステータスと年齢情報を要請します。このコンプライアンス法による要件以外でアプリに別途年齢確認手順がある場合でも、まずgetAgeRange APIを呼び出して年齢を確認することを推奨します。

getAgeRange APIを呼び出すと、年齢確認法の対象となる地域に在住するユーザーのステータスデータuserStateと年齢層がレスポンスとして返されます。 該当管轄権のみに返される基本的な年齢層は次のとおりで、地域の要件に応じて変更される可能性があります:

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

getAgeRange APIの呼び出し

ユーザーの年齢層を要請するgetAgeRange APIを呼び出すサンプルコードは次のとおりです:

API Reference: Unity®

using hive;

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

API Reference: 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 Reference: 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 call success
        } 
    }
})

API Reference: Java

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

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

API Reference: Swift

import HIVEService    

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

API Reference: 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()) {
            // Call success
    }
}));

getAgeRange APIレスポンス

getAgeRange APIレスポンスフィールドの説明は次のとおりです。各フィールド値を活用して年齢に応じたゲームプロセスを提供できます。

レスポンス値は変更される可能性がありますので、最新の値が必要な場合はアプリが開かれた時にAPIレスポンスを要請してください。

レスポンスフィールド 説明
userState VERIFIED ユーザーは18歳以上です。
SUPERVISED ユーザーには保護者が年齢を設定した監督対象アカウントがあります。ageLowerageUpperを使用してユーザーの年齢層を確認します。
SUPERVISED_APPROVAL_PENDING ユーザーには監督対象アカウントがあり、監督保護者がまだ一つ以上の保留中の重要な変更を承認していません。ageLowerageUpperを使用してユーザーの年齢層を確認します。mostRecentApprovalDateを使用して最後に承認された重要な変更を確認します。
SUPERVISED_APPROVAL_DENIED ユーザーには監督対象アカウントがあり、監督対象ユーザーの保護者が一つ以上の重要な変更に对する承認を拒否しました。ageLowerageUppermostRecentApprovalDateを使用して最後に承認された重要な変更を確認してください。
UNKNOWN ユーザーは該当管轄権・地域の外部にいます。これらのユーザーは18歳以上である可能性も、未満である可能性もあります。
REQUIRED 該当管轄権・地域でユーザーが確認または監督されていません。これらのユーザーは18歳以上である可能性も、未満である可能性もあります。年齢確認を受けるために、ユーザーにデバイス設定とマーケットプレイスアプリを訪問してステータスを確認するよう求めてください。
ageLower 0 to 18 監督対象ユーザーの年齢層の下限(含む)です。ageLowerageUpperを使用してユーザーの年齢層を確認します。
-1 userStateがUNKNOWNまたはREQUIREDです。
ageUpper 2 to 18 監督対象ユーザーの年齢層の上限(含む)です。ageLowerageUpperを使用してユーザーの年齢層を確認します。
-1 ユーザーが18歳以上であるか、userStateがUNKNOWNまたはREQUIREDです。
mostRecentApprovalDate Datestamp 最近承認された重要な変更の日付。
例)"2023-07-01T00:00:00.008Z"
Apple App Storeはこれをサポートしません。
Empty (a blank value) userStateがSUPERVISEDで提出された重要な変更がないか、userStateがUNKNOWNまたはREQUIREDです。
Apple App Storeはこれをサポートしません。
ageRangeId App Store generated ID マーケットプレイスが生成した英数字ID。
Google Play Store : Google Playが監督対象ユーザーのインストールに割り当てたIDで、これはinstallIDです。アプリ承認取消を通知するために使用されます。アプリ承認取消ドキュメントを確認してください。
Amazon App Store : AmazonアカウントのuserIdです。
Apple App Store : サポートされていません。
Empty (a blank value) userStateがUNKNOWNまたはREQUIREDです。
Apple App Storeはこれをサポートしません。

Apple App Store年齢層共有ポップアップ

Apple App Storeでは、getAgeRange APIを呼び出したときに年齢層の共有を要請するポップアップが表示されます。

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


アプリ内重要変更通知

一部の管轄権および地域の規制に従い、ゲームアプリで次のような変更が発生した場合、ゲームアプリは保護者(親権者)に変更を通知し、未成年ユーザーがアプリを継続使用することへの承認を要請する必要があります。

  • データの収集、保存、共有の変更
  • 年齢レーティングの変更
  • 新しいアプリ内購入や広告機能の追加
  • ユーザーエクスペリエンスの変更など

ゲームアプリは、いつ変更を通知し承認を要請するかを決定できます。各マーケットプレイスによる変更通知方法は次のとおりです:

  • Google PlayおよびAmazon Appstore: 各マーケットプレイスが運営する開発者コンソールを通じた通知
  • Apple App Store: ゲームアプリから直接showAgeRangeUpdatePermission APIを呼び出して通知

showAgeRangeUpdatePermission API

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

Note

showAgeRangeUpdatePermission APIが渡すdescriptionパラメータを作成する際には、保護者がアプリで変更された内容を明確に理解できるよう、簡潔でわかりやすい言葉を使用してください。保護者(親権者)はこのパラメータの説明を確認して承認するかどうかを決定します。

showAgeRangeUpdatePermission APIを呼び出すサンプルコードは次のとおりです:

API Reference: Unity®

using hive;

String description = "This update adds video calling and location sharing features.";

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

API Reference: C++

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

std::string description = "This update adds video calling and location sharing features.";

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

API Reference: Kotlin

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

val description: String = "This update adds video calling and location sharing features."

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

API Reference: Java

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

String description = "This update adds video calling and location sharing features.";

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

API Reference: Swift

import HIVEService    

let description = "This update adds video calling and location sharing features."

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

API Reference: Objective-C

#import <HIVEService/HIVEService-Swift.h>

NSString *description = "This update adds video calling and location sharing features.";

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

FString Description = TEXT("This update adds video calling and location sharing features.");

FHiveAuthV4::ShowAgeRangeUpdatePermission(Description, FHiveAuthV4OnShowAgeRangeUpdatePermissionDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveAuthV4AgeRange& AgeRange) {
    if (Result.IsSuccess()) {
            // 呼び出し成功
    }
}));

保護者承認取消通知

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

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

  • Google Play: Age SignalsページからinstallIDリストをダウンロードして取消を確認できます。
    • Google PlayのinstallIdは3か月間有効で、その後削除されます。
  • Apple App Store: 承認取消に関する通知を送信します。
  • Amazon Appstore: 開発者コンソールのレポートセクションでAmazon userIdをダウンロードして取消を確認できます。


iOSターゲットエンジン別Age Range権限設定

iOSターゲットで開発する各エンジン環境でAge Range権限を設定する方法は次のとおりです。

Native

Native環境でAge Range APIをリクエストするには、次の手順でDeclared Age Range権限を追加します:

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

Unity

Unity環境でAge Range APIをリクエストするには、次の手順でDeclared Age Range権限を追加します。Unityエディターで簡単に設定できます。

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

Unreal Engine

Unreal Engine環境では、次の*entitlements template*を通じてDeclared Age Range権限を追加します。使用中のentitlements templateファイルにキー値を追加してください。

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

templateを使用していない場合は、<アプリ_プロジェクト_パス>/Plugins/HIVESDK/Source/HiveSDKiOS/template/HIVESDKV4Tester.entitlementsファイルを参照してください。