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

การตอบสนองต่อกฎหมายความรับผิดชอบของร้านค้าแอป

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

Note

โมดูล Age Range ใช้ได้จาก Hive SDK v4 26.0.1 สำหรับเป้าหมาย Android และ iOS และไม่จำเป็นต้องนำไปใช้บังคับจนกว่ากฎหมายการตรวจสอบอายุจะเข้าใจ

Warning

จนกว่ากฎหมายการตรวจสอบอายุจะเข้าใจ การเพิ่มโมดูล Age Range และการเรียก API getAgeRange ในสภาพแวดล้อมผู้ใช้ที่ได้รับสถานะและข้อมูลอายุผู้ใช้จริงจะทำให้เกิดการตอบสนองข้อผิดพลาดจากตลาดดิจิทัลแต่ละแห่ง (Google Play, Apple App Store) ดังนั้นจึงไม่จำเป็นต้องเพิ่มโมดูล Age Range จนกว่ากฎหมายการตรวจสอบอายุจะเข้าใจ และแม้ว่าคุณจะเพิ่มและเรียกใช้แล้วก็สามารถละเว้นข้อผิดพลาดอื่นๆ นอกเหนือจากการตอบสนองข้อผิดพลาดด้านลักษณะการทำงานอย่างชัดเจน เช่น PENDING หรือ DENIED
เพื่อรับการตอบสนองปกติก่อนที่กฎหมายจะเข้าใจ คุณสามารถใช้ API การทดสอบแซนด์บ็อกซ์และเครื่องมือที่จัดเตรียมโดย Apple สำหรับรายละเอียดเพิ่มเติม โปรดอ้างอิง ประกาศอย่างเป็นทางการของ Apple

หลังจากที่กฎหมายการตรวจสอบอายุเข้าไปมีผล การเพิ่มโมดูล Age Range และการเรียก API getAgeRange จะช่วยให้คุณได้รับข้อมูลสถานะและอายุของผู้ใช้แบบเรียลไทม์ (จะมีการแจ้งเตือนแยกต่างหาก)

คำแนะนำนี้อธิบายวิธีการทำงาน การใช้งาน และวิธีการทดสอบโมดูล Age Range ที่จัดเตรียมโดย Hive SDK


ภาพรวมการทำงาน Age Range

คุณสมบัติที่จัดเตรียมโดยโมดูล Age Range มีดังนี้:

  • การตรวจสอบ Age Range ของผู้ใช้และสถานะการอนุมัติ
  • การแจ้งเตือนการเปลี่ยนแปลงในแอปที่สำคัญและคำขอการอนุมัติ
    • showAgeRangeUpdatePermission API (Apple App Store เท่านั้น)
    • การแจ้งเตือนการเพิกถอนความยินยอมจากผู้ปกครอง

ขั้นตอนการทำงานตามตลาดดิจิทัล

ขั้นตอนการทำงานของโมดูล Age Range ตามตลาดดิจิทัลมีดังนี้:

  • Google Play, Amazon Appstore, Samsung Galaxy Store

  • Apple App Store


[การเตรียม] เพิ่มโมดูล Age Range

เพื่อเตรียมการใช้โมดูล Age Range ให้เพิ่มหรือลบโมดูล Age Range ตามเอนจิน SDK การพัฒนาและระบบปฏิบัติการเป้าหมายแต่ละอย่าง

SDK Native Android

เพิ่มโมดูล Age Range

  1. ตั้งค่าตลาดดิจิทัลใน การตั้งค่า SDK ทั่วไป
  2. เพิ่มรายการต่อไปนี้ในไฟล์ build.gradle ระดับโมดูล:
    // App Store Accountability Law compliance - Google
    implementation "com.com2us.android.hive:hive-agerange-google-agesignals"
    

ลบโมดูล Age Range

ลบรายการต่อไปนี้จากไฟล์ build.gradle ระดับโมดูล:

// App Store Accountability Law compliance - Google
// implementation "com.com2us.android.hive:hive-agerange-google-agesignals" // ลบบรรทัดนี้เมื่อไม่ใช้

SDK Native iOS

เพิ่มโมดูล Age Range

  1. อ้างอิง ตัวอย่างรหัส Podfile และเพิ่มเนื้อหาที่เกี่ยวข้องกับกฎหมายความรับผิดชอบของ App Store:

    target 'HIVE_GAME_COOL' do
    pod 'HiveAgeRangeApple', '${SDK_VERSION}'
    end
    

  2. เพิ่มสิทธิ์ Declared Age Range ในสภาพแวดล้อม SDK Native iOS ในลำดับต่อไปนี้:

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

ลบโมดูล Age Range

อ้างอิง ตัวอย่างรหัส Podfile และลบเนื้อหาที่เกี่ยวข้องกับกฎหมายความรับผิดชอบของ App Store:

target 'HIVE_GAME_COOL' do
end

SDK Cocos2d-x Android

เหมือนกับ SDK Native Android

SDK Cocos2d-x iOS

เหมือนกับ SDK Native iOS

SDK Unity Android

เพื่อใช้โมดูล Age Range ในสภาพแวดล้อม Unity เป้าหมาย Android ให้กำหนดค่าในลำดับต่อไปนี้:

  1. คลิกเมนู Hive > ExternalDependency
  2. ตรวจสอบรายการ Age Range [Market] สำหรับตลาดดิจิทัลที่รองรับภายใต้ Market Settings โมดูล AgeRange ต้องใช้โมดูลตลาดดิจิทัลที่คุณต้องการรองรับ

    ※ ยกเลิกการตรวจสอบหากคุณไม่ต้องการใช้โมดูล Age Range
    คุณสามารถยกเลิกการตรวจสอบหากคุณไม่ใช้โมดูล AgeRange Google และ Apple AgeRange โมดูล Age Range Amazon และ Age Range Samsung จะรวมอยู่โดยอัตโนมัติเมื่อคุณรวมแต่ละโมดูลตลาดดิจิทัลระดับสูงกว่า

SDK Unity iOS

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

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

SDK Unreal Engine Android

เพื่อใช้โมดูล Age Range ในสภาพแวดล้อม Unreal Engine เป้าหมาย Android ให้กำหนดค่าในลำดับต่อไปนี้:

  1. เลือกเมนู Unreal Editor → Edit → Project Settings
  2. เลือก Hive SDK → Dependency → Android จากแผงด้านซ้าย Project Settings
  3. ตรวจสอบ Hive Module → Enable AgeRange

    ※ ยกเลิกการตรวจสอบหากคุณไม่ต้องการใช้โมดูล AgeRange

SDK Unreal Engine iOS

เพื่อใช้โมดูล Age Range ในสภาพแวดล้อม Unreal Engine เป้าหมาย iOS ให้กำหนดค่าในลำดับต่อไปนี้:

  1. เลือก Unreal Editor → Edit → Project Settings
  2. เลือก Hive SDK → Dependency → iOS จากแผงด้านซ้าย Project Settings
  3. ตรวจสอบ Hive Module → Enable AgeRange

    ※ ยกเลิกการตรวจสอบหากคุณไม่ต้องการใช้โมดูล AgeRange

  4. ในสภาพแวดล้อม Unreal Engine ให้แก้ไขไฟล์ IOSExport.cs เพื่อเพิ่มสิทธิ์ Declared Age Range
    ในไฟล์ 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"));
    
    // Add
    // Age Range 모듈 사용을 위해 필요한 항목입니다.
    Text.AppendLine("\t<key>com.apple.developer.declared-age-range</key>");
    Text.AppendLine("\t<true/>");
    // Add End
    
        if (bCloudKitSupported) {
                if (iCloudContainerIdentifiersXML != "")
    

แก้ไขเทมเพลต entitlements (Unreal Engine 5)

Note

ในสภาพแวดล้อม Hive SDK Unreal Engine 5 คุณสามารถเพิ่มสิทธิ์ Declared Age Range โดยใช้เทมเพลต *.entitlements แทนการแก้ไขไฟล์ IOSExport.cs

ในโครงการ Unreal Engine 5 ของคุณ ให้เพิ่มสิทธิ์ Declared Age Range โดยใช้เทมเพลต .entitlements_ ดังแสดงด้านล่าง เพิ่มคีย์-ค่าลงในเทมเพลต _.entitlements ที่มีอยู่ของคุณ

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

entitlements 템플릿이 없다면, Plugins/HIVESDK/Source/HiveSDKiOS/template/ 경로 하위의 HIVESDKV4Tester.entitlements 파일을 참고할 수 있습니다.

ขอ Age Range และสถานะการอนุมัติของผู้ใช้

เรียก getAgeRange API ในแอปที่ทำงานเพื่อตรวจสอบอายุของผู้ใช้และสถานะการอนุมัติจากผู้ปกครอง นอกจากกฎหมายที่ควบคุมโดยการปฏิบัติตามข้อกำหนดนี้แล้ว หากแอปมีกระบวนการตรวจสอบอายุแยกต่างหาก ขอแนะนำให้เรียก getAgeRange API ก่อนเพื่อตรวจสอบอายุ

เมื่อคุณเรียก getAgeRange API ข้อมูลสถานะ userState และ Age Range ของผู้ใช้ที่อาศัยอยู่ในภูมิภาคที่อยู่ภายใต้กฎหมายการตรวจสอบอายุจะถูกส่งคืนเป็นการตอบสนอง Age Ranges เริ่มต้นที่ส่งคืนสำหรับเขตอำนาจศาลที่ใช้ได้มีดังต่อไปนี้และอาจเปลี่ยนแปลงตามข้อกำหนดของภูมิภาค:

  • 0~12 ปี
  • 13~15 ปี
  • 16~17 ปี
  • 18 ปีขึ้นไป

เรียก getAgeRange API

ต่อไปนี้เป็นตัวอย่างโค้ดสำหรับการเรียก getAgeRange API เพื่อขอ age range ของผู้ใช้

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

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

หลังจากขอ getAgeRange API ในแอปเกม ขั้นตอนการดำเนินงานของแอปเกมตามค่าการตอบสนอง userState มีดังต่อไปนี้:

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

เมื่อเรียก getAgeRange API บน Apple App Store จะแสดงป๊อปอัปขอการแชร์ age range

เฉพาะผู้ใช้ที่เลือกแชร์ age range ของตนเท่านั้นที่สามารถตรวจสอบ age range และสถานะการอนุมัติได้ หากปฏิเสธ จะได้รับสถานะ REQUIRED

ข้อมูลการตอบสนอง getAgeRange API

คำอธิบายของฟิลด์การตอบสนอง getAgeRange API มีดังต่อไปนี้ คุณสามารถจัดหากระบวนการเกมตามอายุโดยใช้ค่าของแต่ละฟิลด์

ค่าการตอบสนองอาจเปลี่ยนแปลง เพื่อให้ได้ค่าล่าสุด ให้ขอการตอบสนอง API เมื่อแอปเปิด

ฟิลด์การตอบสนอง ค่า คำอธิบาย
userState VERIFIED ผู้ใช้มีอายุ 18 ปีขึ้นไป
SUPERVISED ผู้ใช้มีบัญชีที่ได้รับการดูแลโดยผู้ปกครองที่ตั้งค่า age range ใช้ ageLower และ ageUpper เพื่อตรวจสอบ age range ของผู้ใช้
SUPERVISED_APPROVAL_PENDING ผู้ใช้มีบัญชีที่ได้รับการดูแล และผู้ปกครองที่ดูแลยังไม่ได้อนุมัติการเปลี่ยนแปลงสำคัญที่รออยู่อย่างน้อยหนึ่งรายการ ใช้ ageLower และ ageUpper เพื่อตรวจสอบ age range ของผู้ใช้ ใช้ mostRecentApprovalDate เพื่อตรวจสอบการเปลี่ยนแปลงสำคัญที่ได้รับอนุมัติล่าสุด
SUPERVISED_APPROVAL_DENIED ผู้ใช้มีบัญชีที่ได้รับการดูแล และผู้ปกครองที่ดูแลได้ปฏิเสธการอนุมัติสำหรับการเปลี่ยนแปลงสำคัญอย่างน้อยหนึ่งรายการ ใช้ ageLower, ageUpper, และ mostRecentApprovalDate เพื่อตรวจสอบการเปลี่ยนแปลงสำคัญที่ได้รับอนุมัติล่าสุด
UNKNOWN ผู้ใช้ไม่อยู่ภายใต้การตรวจสอบอายุ ผู้ใช้อาจอยู่นอกเขตอำนาจศาลและภูมิภาคที่ใช้ได้ หรืออาจมีอายุ 18 ปีขึ้นไป/น้อยกว่า หากคุณตั้งค่า 'การตรวจสอบอายุผู้ใช้' เป็น 'ไม่ตรวจสอบ' ใน 'Console > Provisioning > SDK Settings' คุณจะได้รับการตอบสนอง UNKNOWN
REQUIRED ผู้ใช้ยังไม่ได้รับการตรวจสอบหรือได้รับการดูแลในเขตอำนาจศาลและภูมิภาคที่ใช้ได้ ผู้ใช้เหล่านี้อาจมีอายุ 18 ปีขึ้นไป/น้อยกว่า เพื่อรับการตรวจสอบอายุ ให้ขอให้ผู้ใช้ไปที่การตั้งค่าอุปกรณ์และแอปตลาดเพื่อตรวจสอบสถานะของพวกเขา
ageLower 0 ถึง 18 ขอบเขตล่าง (รวม) ของ age range สำหรับผู้ใช้ที่ได้รับการดูแล ใช้ ageLower และ ageUpper เพื่อตรวจสอบ age range ของผู้ใช้
-1 userState เป็น UNKNOWN หรือ REQUIRED
ageUpper 2 ถึง 18 ขอบเขตบน (รวม) ของ age range สำหรับผู้ใช้ที่ได้รับการดูแล ใช้ ageLower และ ageUpper เพื่อตรวจสอบ age range ของผู้ใช้
-1 ผู้ใช้มีอายุ 18 ปีขึ้นไป หรือ userState เป็น UNKNOWN หรือ REQUIRED
mostRecentApprovalDate Datestamp วันที่ของการเปลี่ยนแปลงสำคัญที่ได้รับอนุมัติล่าสุด
ตัวอย่าง) "2023-07-01T00:00:00.008Z"
ไม่รองรับโดย Apple App Store
Samsung Galaxy Store ส่งคืนข้อมูลในรูปแบบ YYYY-MM-DD
ว่างเปล่า (ค่าว่าง) userState เป็น SUPERVISED และไม่มีการเปลี่ยนแปลงสำคัญที่ส่ง หรือ userState เป็น UNKNOWN หรือ REQUIRED
ไม่รองรับโดย Apple App Store
ageRangeId ID ที่สร้างโดย App Store ID ตัวระบุที่สร้างโดยตลาด
Google Play Store : ID ที่กำหนดโดย Google Play ให้กับการติดตั้งของผู้ใช้ที่ได้รับการดูแล เรียกว่า installID ใช้เพื่อแจ้งการเพิกถอนการอนุมัติแอป ตรวจสอบ เอกสารการเพิกถอนการอนุมัติแอป
Amazon Appstore : userId ของบัญชี Amazon
Apple App Store : ไม่รองรับ
Samsung Galaxy Store: ID ที่สร้างโดย Samsung Galaxy Store
ว่างเปล่า (ค่าว่าง) userState เป็น UNKNOWN หรือ REQUIRED
ไม่รองรับโดย Apple App Store


การแจ้งเตือนการเปลี่ยนแปลงในแอปที่สำคัญและคำขอการอนุมัติ

ตามกฎระเบียบในเขตอำนาจศาลและภูมิภาคบางแห่ง เมื่อการเปลี่ยนแปลงต่อไปนี้เกิดขึ้นในแอปเกม แอปเกมจะต้องแจ้งผู้ปกครองหรือผู้ดูแลเกี่ยวกับการเปลี่ยนแปลงและขอการอนุมัติให้ผู้เยาว์ใช้แอปต่อไป

  • การเปลี่ยนแปลงข้อมูลที่ถูกเก็บรวบรวม จัดเก็บ หรือแชร์
  • การเปลี่ยนแปลงเรตติ้งอายุ
  • การเพิ่มคุณสมบัติการซื้อในแอปใหม่หรือคุณสมบัติโฆษณา
  • การเปลี่ยนแปลงประสบการณ์ผู้ใช้ เป็นต้น

แอปเกมสามารถกำหนดเวลาที่จะแจ้งการเปลี่ยนแปลงและขอการอนุมัติได้ วิธีการแจ้งการเปลี่ยนแปลงสำหรับตลาดแต่ละแห่งมีดังต่อไปนี้:

  • Google Play และ Amazon Appstore, Samsung Galaxy Store: การแจ้งผ่านคอนโซลนักพัฒนาที่ดำเนินการโดยตลาดแต่ละแห่ง
  • 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()) {
        // API call success
    }
}));

การแจ้งการเพิกถอนการอนุมัติจากผู้ปกครอง

แม้ว่าผู้ปกครองหรือผู้ดูแลจะอนุมัติการแจ้งการเปลี่ยนแปลงสำคัญในแอปแล้ว พวกเขาสามารถยกเลิกการอนุมัติภายหลังได้ หากการอนุมัติถูกเพิกถอน ผู้ใช้เยาว์จะไม่สามารถเข้าถึงแอปได้อีกต่อไป

เมื่อผู้ปกครองหรือผู้ดูแลเพิกถอนการอนุมัติ วิธีตรวจสอบการแจ้งการเพิกถอนผ่านตลาดแต่ละแห่งมีดังต่อไปนี้:

  • Google Play: คุณสามารถยืนยันการเพิกถอนโดยการดาวน์โหลดรายการ installID จากหน้า Age Signals * installID ของ Google Play มีอายุการใช้งาน 3 เดือนและจะถูกลบหลังจากนั้น
  • Apple App Store: ส่ง การแจ้งเกี่ยวกับการเพิกถอนการอนุมัติ
  • Amazon Appstore: คุณสามารถยืนยันการเพิกถอนโดยการดาวน์โหลด Amazon userId จากส่วนรายงานในคอนโซลนักพัฒนา
  • Samsung Galaxy Store: เนื่องจากไม่มีการส่งการแจ้งการเพิกถอนการอนุมัติจากผู้ปกครองแยกต่างหาก คุณสามารถตรวจสอบสถานะการเพิกถอนโดยการเรียก showAgeRangeUpdatePermission API และตรวจสอบค่าสถานะที่ส่งคืน


การทดสอบ Age range

Hive SDK จัดหาสภาพแวดล้อมการทดสอบและกรณีทดสอบที่ช่วยให้คุณได้รับการตอบสนองปกติเมื่อขอ getAgeRange API โดยไม่ขึ้นอยู่กับว่ากฎหมายการตรวจสอบอายุได้ถูกนำมาใช้แล้วหรือไม่

สภาพแวดล้อมการทดสอบ Age Range และกรณีทดสอบใช้ได้เฉพาะในสภาพแวดล้อมการพัฒนาเป้าหมาย Android เท่านั้น และคุณสามารถจำลองพฤติกรรม API ผ่านการตั้งค่าโหมดดีบัก

Note

เพื่อทดสอบคุณสมบัติ Age Range ในสภาพแวดล้อมการพัฒนาเป้าหมาย iOS คุณสามารถใช้เครื่องมือทดสอบแซนด์บ็อกซ์ที่จัดหาโดย Apple เข้าสู่ระบบด้วยบัญชีแซนด์บ็อกซ์ Apple และทดสอบ

เปิดใช้งานโหมดดีบัก

เพื่อตั้งค่าโหมดดีบักในสภาพแวดล้อมการพัฒนาเป้าหมาย Android ให้รันคำสั่งต่อไปนี้ โหมดดีบักทำงานใน Hive ZoneType.SANDBOX

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

ใช้การตั้งค่าโหมดดีบักเฉพาะสำหรับการทดสอบหน่วยย่อยหรือการทดสอบการรวมระบบเพื่อตรวจสอบพฤติกรรมในแอปเกม

การตอบสนองข้อมูลตามกรณีทดสอบ

หลังจากตั้งค่าโหมดดีบักในสภาพแวดล้อมการพัฒนาเป้าหมาย Android การตอบสนองข้อมูลที่ส่งคืนโดย Google Play Store สำหรับแต่ละกรณีทดสอบมีดังต่อไปนี้:

กรณีทดสอบ userStatus ageLower ageUpper mostRecentApprovalDate ageRangeId คำอธิบาย
1 VERIFIED 18 -1 Empty Empty การตอบสนองสำหรับผู้ใช้อายุ 18 ปีขึ้นไปที่ได้รับการตรวจสอบอายุแล้ว
2 REQUIRED -1 -1 Empty Empty การตอบสนองสำหรับผู้ใช้ที่ไม่สามารถยืนยันสถานะการตรวจสอบอายุและความยินยอมได้
3 SUPERVISED 0 12 2026-01-01T07:00:00.008+0900 550e8400-e29b-41d4-a716-446655441111 การตอบสนองสำหรับผู้ใช้อายุระหว่าง 0 ถึง 12 ปี (รวม)
4 SUPERVISED 13 15 2026-01-01T07:00:00.008+0900 550e8400-e29b-41d4-a716-446655441111 การตอบสนองสำหรับผู้ใช้อายุระหว่าง 13 ถึง 15 ปี (รวม)
5 SUPERVISED 16 17 2026-01-01T07:00:00.008+0900 550e8400-e29b-41d4-a716-446655441111 การตอบสนองสำหรับผู้ใช้อายุระหว่าง 16 ถึง 17 ปี (รวม)
6 SUPERVISED_APPROVAL_DENIED 0 12 2026-01-01T07:00:00.008+0900 550e8400-e29b-41d4-a716-446655441111 การตอบสนองสำหรับผู้ใช้อายุต่ำกว่า 18 ปีที่ความยินยอมยังค้างอยู่หรือไม่ได้รับ
7 UNKNOWN -1 -1 Empty Empty การตอบสนองสำหรับสถานการณ์ทั้งหมดที่กฎหมายการตรวจสอบอายุไม่มีผลบังคับ
8 UNKNOWN -1 -1 Empty Empty การตอบสนองเมื่อ API ส่งคืนสถานะ ResultAPI.RESPONSE_FAIL (APP_NOT_OWNED)
9 UNKNOWN -1 -1 Empty Empty การตอบสนองเมื่อ API ส่งคืนสถานะ ResultAPI.RESPONSE_FAIL (CLIENT_TRANSIENT_ERROR)
10 UNKNOWN -1 -1 Empty Empty การตอบสนองเมื่อ API ส่งคืนสถานะ ResultAPI.RESPONSE_FAIL (INTERNAL_ERROR)
11 UNKNOWN -1 -1 Empty Empty การตอบสนองเมื่อ API ส่งคืนสถานะ ResultAPI.RESPONSE_FAIL (API_NOT_AVAILABLE)