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コンソール > プロビジョニング > 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 呼び出し成功
}
};




