ข้ามไปที่เนื้อหา

การปฏิบัติตามข้อกำหนด

Compliance เป็นฟีเจอร์ที่ Hive SDK จัดเตรียมไว้เพื่อให้แอปเกมสามารถตอบสนองต่อกฎระเบียบทางกฎหมาย นโยบาย และข้อกำหนดที่ต้องปฏิบัติตามเพื่อธุรกิจที่ยั่งยืนและการปกป้องผู้ใช้

คู่มือนี้จะอธิบายเรื่องกฎระเบียบทางกฎหมาย จริยธรรม และการปฏิบัติตามกฎเกณฑ์ที่ Hive SDK Compliance รองรับ และวิธีการนำไปใช้

การตรวจสอบช่วงอายุของผู้ใช้สำหรับกฎหมายความรับผิดชอบของแอปสโตร์

ตั้งแต่วันที่ 1 มกราคม 2026 หลายรัฐในสหรัฐอเมริการวมถึงเท็กซัส ยูทาห์ และหลุยเซียนา จะบังคับใช้กฎหมายที่กำหนดให้มาร์เก็ตเพลซตรวจสอบอายุของผู้ใช้ และอนุญาตให้เฉพาะผู้ใช้ที่ได้รับความเห็นชอบจากผู้ปกครอง (ผู้อำนวยการ) เท่านั้นที่สามารถเล่นเกมต่อได้หากเป็นเยาวชน ด้วยเหตุนี้ นักพัฒนาที่แจกจ่ายแอปผ่านมาร์เก็ตเพลซในรัฐเหล่านี้จะต้องใช้ Age Range API ที่ SDK จัดเตรียมไว้เพื่อตรวจสอบช่วงอายุของผู้ใช้และขอความเห็นชอบจากผู้ปกครอง

Note

คู่มือนี้เขียนขึ้นตามข้อกำหนดของกฎหมายการตรวจสอบอายุในรัฐที่เกี่ยวข้องของสหรัฐอเมริกาที่จะมีผลบังคับใช้ในวันที่ 1 มกราคม 2026 ในรัฐเท็กซัส

ฟีเจอร์ที่ Age Range API จัดเตรียมไว้มีดังนี้:

Warning

จนถึงวันที่ 1 มกราคม 2026 การเรียก Age Range API อาจได้รับการตอบกลับแบบ exception และอาจไม่มีการตอบกลับหากแจกจ่ายผ่าน Apple App Store

ตั้งแต่วันที่ 1 มกราคม 2026 การเรียก Age Range API จะส่งคืนการตอบกลับแบบเรียลไทม์


ขั้นตอนการทำงานของ Age range API

ขั้นตอนการทำงานหลังจากการเรียกที่สำเร็จหรือล้มเหลวเมื่อแอปเกมขอ Age Range API มีดังนี้

เมื่อการเรียก getAgeRange API สำเร็จ

กระบวนการทำงานของแอปเกมตามค่าตอบกลับ userState มีดังนี้:

  • หนึ่งใน UNKNOWN, VERIFIED, SUPERVISED : ดำเนินการแอปและให้เนื้อหาที่เหมาะสมกับอายุ
    • หาก SUPERVISED และแจ้งเตือนการเปลี่ยนแปลงสำคัญในแอป : เรียก showAgeRangeUpdatePermission API เฉพาะเกมที่แจกจ่ายผ่าน Apple App Store เท่านั้น
  • 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 ถึงขีดจำกัดสูงสุด

ขั้นตอนการทำงานตามมาร์เก็ตเพลซ

ขั้นตอนการขอ API และการประมวลผลสำหรับมาร์เก็ตเพลซแต่ละแห่งที่ Age Range 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 ผู้ใช้มีบัญชีที่ได้รับการดูแลโดยผู้ปกครองกำหนดอายุไว้ ใช้ ageLower และ ageUpper เพื่อตรวจสอบช่วงอายุของผู้ใช้
SUPERVISED_APPROVAL_PENDING ผู้ใช้มีบัญชีที่ได้รับการดูแล และผู้ปกครองที่ดูแลยังไม่ได้อนุมัติการเปลี่ยนแปลงสำคัญหนึ่งหรือมากกว่าที่รออยู่ ใช้ ageLower และ ageUpper เพื่อตรวจสอบช่วงอายุของผู้ใช้ ใช้ mostRecentApprovalDate เพื่อตรวจสอบการเปลี่ยนแปลงสำคัญที่ได้รับอนุมัติล่าสุด
SUPERVISED_APPROVAL_DENIED ผู้ใช้มีบัญชีที่ได้รับการดูแล และผู้ปกครองของผู้ใช้ที่ได้รับการดูแลได้ปฏิเสธความเห็นชอบการเปลี่ยนแปลงสำคัญหนึ่งหรือมากกว่า ใช้ ageLower, ageUpper และ mostRecentApprovalDate เพื่อตรวจสอบการเปลี่ยนแปลงสำคัญที่ได้รับอนุมัติล่าสุด
UNKNOWN ผู้ใช้อยู่นอกเขตอำนาจศาล/ภูมิภาคที่เกี่ยวข้อง ผู้ใช้เหล่านี้อาจมีอายุ 18 ปีขึ้นไปหรือน้อยกว่า
REQUIRED ผู้ใช้ยังไม่ได้รับการตรวจสอบหรือการดูแลในเขตอำนาจศาล/ภูมิภาคที่เกี่ยวข้อง ผู้ใช้เหล่านี้อาจมีอายุ 18 ปีขึ้นไปหรือน้อยกว่า เพื่อรับการตรวจสอบอายุ ขอให้ผู้ใช้เยี่ยมชมการตั้งค่าอุปกรณ์และแอปมาร์เก็ตเพลซเพื่อตรวจสอบสถานะของพวกเขา
ageLower 0 to 18 ขีดจำกัดล่าง (รวม) ของช่วงอายุของผู้ใช้ที่ได้รับการดูแล ใช้ ageLower และ ageUpper เพื่อตรวจสอบช่วงอายุของผู้ใช้
-1 userState เป็น UNKNOWN หรือ REQUIRED
ageUpper 2 to 18 ขีดจำกัดบน (รวม) ของช่วงอายุของผู้ใช้ที่ได้รับการดูแล ใช้ ageLower และ ageUpper เพื่อตรวจสอบช่วงอายุของผู้ใช้
-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 : ID ที่ Google Play กำหนดให้สำหรับการติดตั้งของผู้ใช้ที่ได้รับการดูแล ซึ่งก็คือ installID ใช้สำหรับแจ้งการยกเลิกความเห็นชอบแอป ตรวจสอบเอกสารการยกเลิกความเห็นชอบแอป
Amazon App Store : userId ของบัญชี Amazon
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

เมื่อเขียนพารามิเตอร์ description ที่ส่งโดย showAgeRangeUpdatePermission API ให้ใช้ภาษาที่กระชับและเข้าใจง่าย เพื่อให้ผู้ปกครองสามารถเข้าใจอย่างชัดเจนว่ามีอะไรเปลี่ยนแปลงในแอป ผู้ปกครอง (ผู้อำนวยการ) จะตัดสินใจว่าจะให้ความเห็นชอบหรือไม่ตามคำอธิบายพารามิเตอร์นี้

ตัวอย่างโค้ดสำหรับการเรียก 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: คุณสามารถยืนยันการยกเลิกโดยดาวน์โหลดรายการ installID จากหน้า Age Signals
    • installId ของ Google Play มีอายุการใช้งาน 3 เดือน แล้วจะถูกลบ
  • Apple App Store: ส่งการแจ้งเตือนเรื่องการยกเลิกความเห็นชอบ
  • Amazon Appstore: คุณสามารถทราบเรื่องการยกเลิกโดยดาวน์โหลด userId ของ Amazon ในส่วนรายงานของคอนโซลนักพัฒนา


การตั้งค่าสิทธิ์ Age Range ตามเอ็นจินแต่ละตัวสำหรับ iOS

วิธีการตั้งค่าสิทธิ์ Age Range ในสภาพแวดล้อมเอ็นจินแต่ละตัวที่พัฒนาสำหรับเป้าหมาย iOS มีดังนี้

Native

เพื่อขอ Age Range API ในสภาพแวดล้อม Native ให้เพิ่มสิทธิ์ Declared Age Range ตามลำดับดังนี้:

  1. เลือกโปรเจ็คต์นักพัฒนาของคุณจาก project navigator ในหน้าต่างโปรเจ็คต์ Xcode
  2. เลือกแอปนักพัฒนาของคุณจากรายการ TARGETS
  3. คลิกแท็บ Signing & Capabilities
  4. คลิกปุ่ม + Capability ที่ด้านซ้ายบนของแท็บ Signing & Capabilities
  5. เลือก Declared Age Range จากรายการเพื่อเพิ่ม
  6. คุณจะเห็น Declared Age Range ที่เพิ่มเข้าในรายการ Signing & Capabilities

Unity

เพื่อขอ Age Range API ในสภาพแวดล้อม Unity ให้เพิ่มสิทธิ์ Declared Age Range ตามลำดับดังนี้ คุณสามารถตั้งค่านี้ได้ง่ายด้วย Unity editor

  1. เลือก Hive จากเมนูด้านบนของ Unity
  2. เลือก Build project post process setting > iOS
  3. เลือกช่องทำเครื่องหมาย Age Range ใน Hive PostProcess Editor(iOS)
  4. หลังจากส่งออกโปรเจ็คต์ iOS คุณจะเห็น Declared Age Range ที่เพิ่มเข้าในรายการ Signing & Capabilities

Unreal Engine

ในสภาพแวดล้อม Unreal Engine ให้เพิ่มสิทธิ์ Declared Age Range ผ่าน entitlements template ดังนี้ เพิ่มค่า key ลงในไฟล์ entitlements template ที่คุณใช้อยู่

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

หากคุณไม่ได้ใช้ template ให้อ้างอิงไฟล์ <แอป_โปรเจ็คต์_พาธ>/Plugins/HIVESDK/Source/HiveSDKiOS/template/HIVESDKV4Tester.entitlements