Funtap 发行商对接指南
本指南面向已完成越南 Funtap 商店发行合作签约的应用,说明如何使用 Hive SDK 配置 Service Build 并准备实际服务运营。
Hive SDK 会根据构建类型应用 Funtap 模块和配置值,并集成登录界面及用户信息更新所需的 UI 和 API。应用此配置后,可生成符合越南服务政策和政府监管指南的构建。
Note
由于越南商店构建配置不区分审核构建和 Service Build,因此 Hive SDK v4 26.2.0 Android 中为越南发行审核新增的 Appraisal Build 配置功能已在 26.5.0 中删除。
Service Build 应用方法¶
Service Build 是 Android 或 iOS 应用在取得越南发行许可证后用于运营实际服务的构建。此构建使用服务用 Funtap 模块和 token 配置。
事前准备¶
开始 Service Build 工作前,必须先从 Funtap 获取服务用 token。Native 请将该值填入 hive_config.xml;Unity 请将其填入 [顶部工具栏 > Hive > HiveConfig > Optional] 下的 Funtap token 字段。如果尚未准备好该值,则无法完成 Step 2。
Note
可在 Hive 控制台 > Provisioning > SDK 设置 中控制登录后是否显示 Funtap 身份验证。
Service Build 功能会在游戏中已应用的登录流程先完成后使用。登录成功后,将 PlayerInfo 响应中收到的 PlayerID 作为后续 Funtap API 的 userId 使用。
Step 1. 配置 Funtap 库¶
在 Native 中,请在模块级 build.gradle 文件中添加服务用依赖项。
在 Unity 中,在 [顶部工具栏 > Hive] 下点击 ExternalDependency 后,勾选 Funtap 项。
在 Unreal Engine 中,在 [Edit > Project Settings > Hive SDK > Dependency - Android 或 Dependency - iOS] 下勾选 Funtap 项。
Step 2. 应用 Funtap 发布商配置值(token)¶
在 Native 中,请在 hive_config.xml 文件中添加从 Funtap 发布商获取的 token。
在 Unity 中,在 [顶部工具栏 > Hive > HiveConfig] 下点击 Optional 后,在 Funtap 的 token 字段中输入已发放的密钥。
在 Unreal Engine 中,在 [Edit > Project Settings > Hive Config > Android] 下展开 Funtap 项后,在 token 字段中输入已发放的密钥。
Step 3. 确认是否处于政府审核期¶
要在 Service Build 中判断是否显示手动信息更新菜单,首先用户必须已成功登录。
登录完成后,在进入角色信息界面或设置界面时调用 ProviderFuntap.isFuntapUnderGovernmentReview(),检查是否正在进行审核。
- 如果该方法返回
true(政府监管审核期) - Hive SDK 会在登录后立即自动显示基于 WebView 的身份验证界面。
- 在这种情况下,由于身份验证流程会自动进行,请不要在游戏内额外显示手动信息更新 UI。
- 异常处理 (
skipUpdateUserInfo) - 如果
hive_config.xml文件中的skipUpdateUserInfo值为true,即使登录成功,也不会强制显示身份验证界面。
如果结果为 false,则进入下一 Step。
Step 4. 确认用户信息输入是否完成¶
如果 Step 3 的结果为 false,则需要判断用户是否可以进行手动信息更新。userId 需传入登录成功后从 PlayerInfo 响应中收到的字符串形式的 PlayerID。有关 PlayerInfo 响应值的详细信息,请参阅开始前。
如果调用 ProviderFuntap.checkUserInfoComplete(userId) 的结果中传递的 isCompleted 值为 true,表示信息输入已完成,因此不显示 UI。如果 isCompleted 为 false,则在下一 Step 提供信息更新 UI。
#include "HiveProviderFuntap.h"
FString UserId = "USER_ID";
FHiveProviderFuntap::CheckUserInfoComplete(UserId, FHiveProviderFuntapOnCheckUserInfoCompleteDelegate::CreateLambda([this](const FHiveResultAPI& Result, bool bIsCompleted) {
if (Result.IsSuccess()) {
// 如果 bIsCompleted 为 false,则显示信息更新 UI
}
}));
Step 5. 显示信息更新 UI¶
如果 Step 4 中 isCompleted 为 false,请在角色信息界面或设置界面提供用户可选择的菜单。用户选择该菜单时,调用 ProviderFuntap.showUpdateUserInfo(userId, serverId, serverName, characterId, characterName) 打开信息更新界面。此时,如果 hive_config.xml 文件中的 skipUpdateUserInfo 为 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 调用成功
}
};




