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

คู่มือการเชื่อมต่อพับลิชเชอร์ 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() เมื่อเข้าสู่หน้าข้อมูลตัวละครหรือหน้าการตั้งค่า เพื่อตรวจสอบว่ากำลังมีการตรวจสอบจากภาครัฐหรือไม่ ให้ตัดสินใจว่าจะไปยัง 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. การตรวจสอบว่ากรอกข้อมูลผู้ใช้ครบถ้วนหรือไม่

เมื่อจำเป็นต้องกรอกข้อมูลผู้ใช้ ให้เรียก ProviderFuntap.checkUserInfoComplete(userId) เพื่อตรวจสอบว่าการอัปเดตข้อมูลที่จำเป็นเสร็จสมบูรณ์หรือไม่

  • สำหรับพารามิเตอร์ userId ให้ส่ง Player ID ที่ได้รับจากการตอบกลับ PlayerInfo หลังจากเข้าสู่ระบบสำเร็จในรูปแบบสตริง ดูรายละเอียดเกี่ยวกับค่าการตอบกลับ PlayerInfo ได้ที่ ก่อนเริ่มต้น
  • ประมวลผลผลลัพธ์ของ callback:
    • isCompleted == true: กรอกข้อมูลเสร็จสมบูรณ์แล้ว ให้ไปยัง Step ถัดไปโดยไม่ต้องแสดง UI กรอกข้อมูลเพิ่มเติม
    • isCompleted == false: ข้อมูลที่จำเป็นยังไม่ครบ ให้แสดง UI เพื่อให้ผู้ใช้ลงทะเบียนและแก้ไขข้อมูลด้วยตนเอง
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) เพื่อแสดง WebView อัปเดตข้อมูล

Note

หาก skipUpdateUserInfo ในไฟล์ hive_config.xml เป็น true หน้าจอจะไม่แสดงและจะส่งคืนผลสำเร็จ

Note

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

ตัวอย่างหน้าจอป๊อปอัปยืนยันตัวตน
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 สำเร็จ
    }
};