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

คู่มือการเชื่อมต่อพับลิชเชอร์ Funtap

คู่มือนี้อธิบายวิธีตั้งค่า Service Build ด้วย Hive SDK และเตรียมความพร้อมสำหรับการให้บริการจริง สำหรับแอปที่ทำสัญญาการเผยแพร่กับสโตร์ Funtap เวียดนามเสร็จสมบูรณ์แล้ว

Hive SDK จะใช้โมดูล Funtap และค่าการตั้งค่าตามประเภทบิลด์ เพื่อเชื่อมต่อ UI และ API ที่จำเป็นสำหรับหน้าจอเข้าสู่ระบบและการอัปเดตข้อมูลผู้ใช้ เมื่อใช้การตั้งค่านี้ จะสร้างบิลด์ที่สอดคล้องกับนโยบายบริการและแนวทางข้อกำหนดของภาครัฐเวียดนามได้

Note

เนื่องจากการตั้งค่าบิลด์สำหรับสโตร์เวียดนามไม่แยกบิลด์สำหรับการตรวจสอบออกจาก Service Build ฟีเจอร์การตั้งค่า Appraisal Build ที่เพิ่มใน Hive SDK v4 26.2.0 Android สำหรับการตรวจสอบการเผยแพร่ในเวียดนามจึงถูกลบออกใน 26.5.0

วิธีใช้ Service Build

Service Build คือบิลด์ที่ใช้ให้บริการจริงหลังจากแอป Android หรือ iOS ได้รับใบอนุญาตเผยแพร่ในเวียดนามแล้ว บิลด์นี้ใช้โมดูล Funtap สำหรับบริการจริงและการตั้งค่า token

การเตรียมการล่วงหน้า

ก่อนเริ่มงาน Service Build คุณต้องได้รับ token สำหรับบริการจาก Funtap ก่อน สำหรับ Native ให้ป้อนค่านี้ใน hive_config.xml และสำหรับ Unity ให้ป้อนในช่อง Funtap token ภายใต้ [แถบเครื่องมือด้านบน > Hive > HiveConfig > Optional] หากยังไม่ได้เตรียมค่านี้ จะไม่สามารถทำ Step 2 ให้เสร็จสิ้นได้

Note

คุณสามารถควบคุมได้ว่าจะแสดงการยืนยันตัวตนของ Funtap หลังจากเข้าสู่ระบบหรือไม่ใน Hive Console > Provisioning > SDK Settings

ฟีเจอร์ Service Build จะใช้หลังจากดำเนินการขั้นตอนการเข้าสู่ระบบที่ใช้ในเกมอยู่แล้วให้เสร็จสิ้นก่อน เมื่อเข้าสู่ระบบสำเร็จ ให้ใช้ PlayerID ที่ได้รับจากการตอบกลับ PlayerInfo เป็น userId สำหรับ Funtap API ในขั้นตอนถัดไป

Step 1. การตั้งค่าไลบรารี Funtap

ใน Native ให้เพิ่ม dependency สำหรับบริการจริงลงในไฟล์ build.gradle ระดับโมดูล

// โมดูล Funtap Service
implementation "com.com2us.android.hive:hive-authv4-provider-funtap"

ใน Unity ให้คลิก ExternalDependency ที่ [แถบเครื่องมือด้านบน > Hive] แล้วเลือกทำเครื่องหมายที่รายการ Funtap

ใน Unreal Engine ให้เลือกช่อง Funtap ที่ [Edit > Project Settings > Hive SDK > Dependency - Android หรือ Dependency - iOS]

Step 2. การใช้ค่าการตั้งค่าของผู้เผยแพร่ Funtap (token)

ใน Native ให้เพิ่ม token ที่ได้รับจากผู้เผยแพร่ Funtap ลงในไฟล์ hive_config.xml

<funtap token="YOUR_TOKEN" />

ใน Unity ให้คลิก Optional ใน [แถบเครื่องมือด้านบน > Hive > HiveConfig] แล้วป้อนคีย์ที่ออกให้ในช่อง token ของ Funtap

ใน Unreal Engine ให้ขยายรายการ Funtap ใน [Edit > Project Settings > Hive Config > Android] แล้วป้อนคีย์ที่ออกให้ในช่อง token

Step 3. การตรวจสอบว่ามีการตรวจสอบจากภาครัฐหรือไม่

ในการตัดสินใจว่าจะแสดงเมนูอัปเดตข้อมูลด้วยตนเองใน Service Build หรือไม่ ผู้ใช้ต้องเข้าสู่ระบบสำเร็จก่อน

หลังจากเข้าสู่ระบบเสร็จแล้ว ให้เรียก ProviderFuntap.isFuntapUnderGovernmentReview() เมื่อเข้าสู่หน้าข้อมูลตัวละครหรือหน้าการตั้งค่า เพื่อตรวจสอบว่ากำลังมีการตรวจสอบอยู่หรือไม่

  • หากเมธอดส่งคืน true (ช่วงการตรวจสอบตามข้อกำหนดภาครัฐ)
  • Hive SDK จะแสดงหน้าจอยืนยันตัวตนแบบ WebView โดยอัตโนมัติทันทีหลังเข้าสู่ระบบ
  • ในกรณีนี้ เนื่องจากขั้นตอนการยืนยันตัวตนดำเนินการโดยอัตโนมัติ อย่าแสดง UI อัปเดตข้อมูลด้วยตนเองแยกต่างหากในเกม
  • การจัดการข้อยกเว้น (skipUpdateUserInfo)
  • หากค่า skipUpdateUserInfo ในไฟล์ hive_config.xml เป็น true หน้าจอยืนยันตัวตนจะไม่ถูกบังคับให้แสดง แม้เข้าสู่ระบบสำเร็จแล้วก็ตาม

ตัวอย่างหน้าจอป๊อปอัปยืนยันตัวตน

หากผลลัพธ์เป็น false ให้ไปยัง Step ถัดไป

using hive;

bool result = ProviderFuntap.isFuntapUnderGovernmentReview();
#include "HiveProviderFuntap.h"

bool bResult = FHiveProviderFuntap::IsFunTapUnderGovernmentReview();
#include <HIVE_SDK_Plugin/HIVE_CPP.h>

bool result = ProviderFuntap::isFuntapUnderGovernmentReview();
import com.hive.ProviderFuntap

val result = ProviderFuntap.isFuntapUnderGovernmentReview()
import com.hive.ProviderFuntap;

boolean result = ProviderFuntap.isFuntapUnderGovernmentReview();
import ProviderFuntap

let result = ProviderFuntapInterface.isFuntapUnderGovernmentReview();

Step 4. การตรวจสอบว่ากรอกข้อมูลผู้ใช้ครบถ้วนหรือไม่

หากผลลัพธ์จาก Step 3 เป็น false คุณต้องตรวจสอบว่าผู้ใช้สามารถดำเนินการอัปเดตข้อมูลด้วยตนเองได้หรือไม่ สำหรับ userId ให้ส่ง PlayerID ที่ได้รับจากการตอบกลับ PlayerInfo หลังจากเข้าสู่ระบบสำเร็จในรูปแบบสตริง ดูรายละเอียดเกี่ยวกับค่าการตอบกลับ PlayerInfo ได้ที่ ก่อนเริ่มต้น

หากค่า isCompleted ที่ส่งกลับจากผลการเรียก ProviderFuntap.checkUserInfoComplete(userId) เป็น true แสดงว่ากรอกข้อมูลเสร็จแล้ว จึงไม่ต้องแสดง UI หาก isCompleted เป็น false ให้แสดง UI อัปเดตข้อมูลใน Step ถัดไป

using hive;

string userId = "USER_ID";

ProviderFuntap.checkUserInfoComplete(userId, (ResultAPI result, bool isCompleted) => {
    if (result.isSuccess()) {
        // แสดง UI อัปเดตข้อมูลหาก isCompleted เป็น false
    }
});
#include "HiveProviderFuntap.h"

FString UserId = "USER_ID";

FHiveProviderFuntap::CheckUserInfoComplete(UserId, FHiveProviderFuntapOnCheckUserInfoCompleteDelegate::CreateLambda([this](const FHiveResultAPI& Result, bool bIsCompleted) {
    if (Result.IsSuccess()) {
        // แสดง UI อัปเดตข้อมูลหาก bIsCompleted เป็น false
    }
}));
#include <HIVE_SDK_Plugin/HIVE_CPP.h>

std::string userId = "USER_ID";

ProviderFuntap::checkUserInfoComplete(userId, [=](ResultAPI const & result, bool isCompleted) {
    if (result.isSuccess()) {
        // แสดง UI อัปเดตข้อมูลหาก isCompleted เป็น false
    }
});
import com.hive.ProviderFuntap
import com.hive.ResultAPI

val userId = "USER_ID"

ProviderFuntap.checkUserInfoComplete(userId) { result: ResultAPI, isCompleted: Boolean ->
    if (result.isSuccess) {
        // แสดง UI อัปเดตข้อมูลหาก isCompleted เป็น false
    }
}
import com.hive.ProviderFuntap;
import com.hive.ResultAPI;

String userId = "USER_ID";

ProviderFuntap.checkUserInfoComplete(userId, (result, isCompleted) -> {
    if (result.isSuccess()) {
        // แสดง UI อัปเดตข้อมูลหาก isCompleted เป็น false
    }
});
import ProviderFuntap

let userId = "USER_ID";

ProviderFuntapInterface.checkUserInfoComplete(userId) { result, isCompleted in
    if (result.isSuccess()) {
        // แสดง UI อัปเดตข้อมูลหาก isCompleted เป็น false
    }
};

Step 5. การแสดง UI อัปเดตข้อมูล

หาก isCompleted เป็น false ใน Step 4 ให้แสดงเมนูที่ผู้ใช้สามารถเลือกได้ในหน้าข้อมูลตัวละครหรือหน้าการตั้งค่า เมื่อผู้ใช้เลือกเมนู ให้เรียก ProviderFuntap.showUpdateUserInfo(userId, serverId, serverName, characterId, characterName) เพื่อเปิดหน้าจออัปเดตข้อมูล ในเวลานี้ หาก skipUpdateUserInfo ในไฟล์ hive_config.xml เป็น true หน้าจอจะไม่แสดงและจะส่งคืนผลสำเร็จ

using hive;

string userId = "USER_ID";
string serverId = "SERVER_ID";
string serverName = "SERVER_NAME";
string characterId = "CHARACTER_ID";
string characterName = "CHARACTER_NAME";

ProviderFuntap.showUpdateUserInfo(userId, serverId, serverName, characterId, characterName, (ResultAPI result) => {
    if (result.isSuccess()) {
        // เรียก API สำเร็จ
    }
});
#include "HiveProviderFuntap.h"

FString UserId = "USER_ID";
FString ServerId = "SERVER_ID";
FString ServerName = "SERVER_NAME";
FString CharacterId = "CHARACTER_ID";
FString CharacterName = "CHARACTER_NAME";

FHiveProviderFuntap::ShowUpdateUserInfo(UserId, ServerId, ServerName, CharacterId, CharacterName, FHiveProviderFuntapOnShowUpdateUserInfoDelegate::CreateLambda([this](const FHiveResultAPI& Result) {
    if (Result.IsSuccess()) {
        // เรียก API สำเร็จ
    }
}));
#include <HIVE_SDK_Plugin/HIVE_CPP.h>

std::string userId = "USER_ID";
std::string serverId = "SERVER_ID";
std::string serverName = "SERVER_NAME";
std::string characterId = "CHARACTER_ID";
std::string characterName = "CHARACTER_NAME";

ProviderFuntap::showUpdateUserInfo(userId, serverId, serverName, characterId, characterName, [=](ResultAPI const & result) {
    if (result.isSuccess()) {
        // เรียก API สำเร็จ
    }
});
import com.hive.ProviderFuntap
import com.hive.ResultAPI

val userId = "USER_ID"
val serverId = "SERVER_ID"
val serverName = "SERVER_NAME"
val characterId = "CHARACTER_ID"
val characterName = "CHARACTER_NAME"

ProviderFuntap.showUpdateUserInfo(userId, serverId, serverName, characterId, characterName) { result: ResultAPI ->
    if (result.isSuccess) {
        // เรียก API สำเร็จ
    }
}
import com.hive.ProviderFuntap;
import com.hive.ResultAPI;

String userId = "USER_ID";
String serverId = "SERVER_ID";
String serverName = "SERVER_NAME";
String characterId = "CHARACTER_ID";
String characterName = "CHARACTER_NAME";

ProviderFuntap.showUpdateUserInfo(userId, serverId, serverName, characterId, characterName, (result) -> {
    if (result.isSuccess()) {
        // เรียก API สำเร็จ
    }
});
import ProviderFuntap

let userId = "USER_ID";
let serverId = "SERVER_ID";
let serverName = "SERVER_NAME";
let characterId = "CHARACTER_ID";
let characterName = "CHARACTER_NAME";

ProviderFuntapInterface.showUpdateUserInfo(userId, serverId, serverName, characterId, characterName) { result in
    if (result.isSuccess()) {
        // เรียก API สำเร็จ
    }
};