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

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

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

Note

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

Warning

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

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

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


ภาพรวมการดำเนินการช่วงอายุ

ฟีเจอร์ที่มีให้โดยโมดูลช่วงอายุมีดังนี้:

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

การไหลของการดำเนินงานตามตลาด

การไหลของการดำเนินงานของโมดูลช่วงอายุตามตลาดมีดังนี้:

  • Google Play และ Amazon Appstore

  • ร้านค้าแอปเปิ้ล


[การเตรียมการ] เพิ่มโมดูลช่วงอายุ

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

SDK Native Android

เพิ่มโมดูลช่วงอายุ

  1. ตั้งค่าตลาดใน การตั้งค่าทั่วไปของ SDK.
  2. เพิ่มสิ่งต่อไปนี้ในไฟล์ build.gradle ระดับโมดูล:
    // การปฏิบัติตามกฎหมายความรับผิดชอบของ App Store - 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 Native iOS

เพิ่มโมดูลช่วงอายุ

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

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

  2. เพิ่มสิทธิ์ช่วงอายุที่ประกาศในสภาพแวดล้อม SDK Native iOS ตามลำดับดังต่อไปนี้:

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

ลบโมดูลช่วงอายุ

โปรดดูที่ ตัวอย่างโค้ด 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

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

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

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

SDK Unity iOS

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

  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

ในการใช้โมดูลช่วงอายุในสภาพแวดล้อม 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

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

  1. เลือก Unreal Editor → แก้ไข → การตั้งค่าโปรเจกต์
  2. เลือก Hive SDK → การพึ่งพา → iOS จากแผงด้านซ้ายของการตั้งค่าโปรเจกต์
  3. ตรวจสอบโมดูล Hive → เปิดใช้งาน 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"));
    
    // เพิ่ม
    // นี่คือรายการที่จำเป็นสำหรับการใช้โมดูล Age Range
    Text.AppendLine("\t<key>com.apple.developer.declared-age-range</key>");
    Text.AppendLine("\t<true/>");
    // สิ้นสุดการเพิ่ม
    
        if (bCloudKitSupported) {
                if (iCloudContainerIdentifiersXML != ""
    

แก้ไขเทมเพลตสิทธิ์ (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 คุณสามารถดูไฟล์ HIVESDKV4Tester.entitlements ที่อยู่ภายใต้เส้นทาง Plugins/HIVESDK/Source/HiveSDKiOS/template/ ได้

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

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

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

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

เรียก API getAgeRange

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

เอกสารอ้างอิง API: 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: 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: Java

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

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

เอกสาร API: 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
        }
}));

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

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

  • ** หนึ่งใน UNKNOWN, VERIFIED, หรือ SUPERVISED** : ดำเนินการต่อกับแอปและให้เนื้อหาที่เหมาะสมกับอายุ * เมื่อแจ้งการเปลี่ยนแปลงที่สำคัญในแอปขณะอยู่ในสถานะ SUPERVISED : เรียกใช้ API showAgeRangeUpdatePermission เฉพาะสำหรับเกมที่จัดจำหน่ายใน Apple App Store
  • SUPERVISED_APPROVAL_PENDING หรือ SUPERVISED_APPROVAL_DENIED : * การอนุมัติจากผู้ปกครองสำหรับคำขอให้ผู้เยาว์ใช้แอปต่อไปยังอยู่ระหว่างรอการอนุมัติหรือถูกปฏิเสธ ตรวจสอบอายุและอนุญาตให้แอปดำเนินการต่อ
  • REQUIRED : อายุของผู้ใช้ยังไม่ได้รับการตรวจสอบในเขตอำนาจศาลและภูมิภาคที่เกี่ยวข้อง แนะนำให้ผู้ใช้แชร์ข้อมูลอายุในแอปตลาดหรือการตั้งค่าอุปกรณ์เพื่อให้แอปสามารถตรวจสอบอายุได้.

การเรียก API getAgeRange ที่ล้มเหลว

หลังจากที่ขอ API getAgeRange ในแอปเกม หากการเรียกล้มเหลว คุณจะได้รับรหัสความล้มเหลวของ ResultAPI ดังต่อไปนี้:

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

ข้อผิดพลาดในการเรียก API อาจเกิดขึ้นได้จากหลายสาเหตุ เช่น การใช้แอปตลาดที่ไม่ใช่เวอร์ชันล่าสุด

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

ตัวอย่างการตอบสนองของการเรียก API getAgeRange (Apple App Store)

เมื่อเรียกใช้ API getAgeRange บน Apple App Store จะมีป๊อปอัปที่ขอให้แชร์ช่วงอายุปรากฏขึ้น

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

ข้อมูลการตอบกลับ API GetAgeRange

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

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

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


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

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

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

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

  • Google Play และ Amazon Appstore: การแจ้งเตือนผ่านคอนโซลนักพัฒนาที่ดำเนินการโดยแต่ละตลาด
  • Apple App Store: การแจ้งเตือนโดยการเรียกใช้ API showAgeRangeUpdatePermission โดยตรงจากแอปเกม

ShowAgeRangeUpdatePermission API

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

Note

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

ต่อไปนี้คือตัวอย่างโค้ดสำหรับเรียกใช้ API showAgeRangeUpdatePermission

API Reference: Unity ®

using hive;

String description = "การอัปเดตนี้เพิ่มฟีเจอร์การโทรวิดีโอและการแชร์ตำแหน่ง.";

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 = "การอัปเดตนี้เพิ่มฟีเจอร์การโทรวิดีโอและการแชร์ตำแหน่ง.";

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 Reference: Objective-C

#import <HIVEService/HIVEService-Swift.h>

NSString *description = "การอัปเดตนี้เพิ่มฟีเจอร์การโทรวิดีโอและการแชร์ตำแหน่ง.";

[HIVEAuthV4 showAgeRangeUpdatePermission: description handler:^(HIVEResultAPI *result, HIVEAgeRange *ageRange) {
    if ([result isSuccess]) {
        // API call success    
    }    
}];
#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 * installID ของ Google Play ใช้ได้เป็นเวลา 3 เดือนและจะถูกลบหลังจากนั้น
  • Apple App Store: ส่ง การแจ้งเตือนเกี่ยวกับการเพิกถอนการอนุมัติ
  • Amazon Appstore: คุณสามารถยืนยันการเพิกถอนโดยการดาวน์โหลด userId ของ Amazon จากส่วนรายงานในคอนโซลนักพัฒนา


การทดสอบช่วงอายุ

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

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

Note

ในการทดสอบฟีเจอร์ช่วงอายุในสภาพแวดล้อมการพัฒนาสำหรับ iOS คุณสามารถใช้เครื่องมือทดสอบใน sandbox ที่ Apple ให้มา เข้าสู่ระบบด้วยบัญชี sandbox ของ Apple และทำการทดสอบ

เปิดโหมดดีบัก

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

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

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

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

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

TestCase userStatus ageLower ageUpper mostRecentApprovalDate ageRangeId Description
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)