跳轉至

合規

Compliance是Hive SDK提供的功能,使遊戲應用程式能夠回應為可持續業務和使用者保護而必須遵循的法律法規、政策和要求。

本指南說明了Hive SDK Compliance支援的法律、倫理和行政監管事項以及如何應用它們。

應用商店責任法的使用者年齡範圍驗證

從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_PENDINGSUPERVISED_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狀態。


應用內重大變更通知

根據某些司法管轄區和地區的法規,當遊戲應用程式發生以下變更時,遊戲應用程式必須通知監護人(家長)變更情況,並請求批准未成年使用者繼續使用應用程式。

  • 資料收集、儲存和共享的變更
  • 年齡評級變更
  • 添加新的應用內購買或廣告功能
  • 使用者體驗變更等

遊戲應用程式可以決定何時通知變更和請求批准。各個市場的變更通知方法如下:

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. 您可以看到**Declared Age Range**已添加到Signing & Capabilities列表中。

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項目匯出後,您可以看到**Declared Age Range**已添加到Signing & Capabilities列表中。

Unreal Engine

在Unreal Engine環境中,通過以下*entitlements模板*添加Declared Age Range權限。將鍵值添加到您正在使用的entitlements模板檔案中。

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

如果您沒有使用模板,請參考/Plugins/HIVESDK/Source/HiveSDKiOS/template/HIVESDKV4Tester.entitlements檔案。