跳轉至

Funtap 發行商對接指南

概要

Funtap 發行商 Software Development Kit(SDK) 串接指南說明在與 Funtap 完成發行合約後,如何將此 SDK 套用至 Android 遊戲,以配置用於越南發行審查的 Appraisal Build 與實際服務用的 Service Build。Hive SDK 會依建置類型使用不同的 Funtap 模組與設定值,串接登入畫面與使用者資訊更新功能所需的 User Interface(UI) 和 Application Programming Interface(API)。套用此設定後,即可準備符合越南服務政策與政府法規的 Android 建置。

Appraisal Build 套用方式

Appraisal Build 是提交至越南發行許可審查的建置。在此建置中,Funtap 登入功能必須能正常運作。

事前準備

在開始 Appraisal Build 工作前,必須先向 Funtap 取得審查用 appKey。Native 請將此值輸入至 hive_config.xml,Unity 請在 上方工具列 > Hive > HiveConfig > Optional 的 Funtap appKey 項目中輸入此值。若未準備好該值,則無法完成步驟 3。

步驟 1. 設定 Funtap-Appraisal 程式庫

Native 請在模組層級的 build.gradle 檔案中新增 Appraisal 用相依性。

// Funtap Appraisal 模組
implementation "com.com2us.android.hive:hive-authv4-provider-funtap-appraisal"

Unity 請在 上方工具列 > Hive 中點擊 ExternalDependency,然後勾選 Funtap-Appraisal 項目。

步驟 2. 設定 Funtap-Appraisal 程式庫權限

為了串接 Funtap-Appraisal 程式庫,請在 AndroidManifest.xml 檔案中新增下列權限設定。

Native 請在模組層級的 AndroidManifest.xml 檔案中新增權限。

  • <project>/app/src/main/AndroidManifest.xml

Unity 請在 Plugins/Android 路徑下的 AndroidManifest.xml 檔案中新增權限。

  • <project>/Assets/Plugins/Android/AndroidManifest.xml

請新增下列權限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

步驟 3. 套用 Funtap 發行商設定值(appKey)

Native 請在 hive_config.xml 檔案中新增從 Funtap 發行商取得的 appKey

<funtap-appraisal appKey="YOUR_APP_KEY" />

Unity 請在 上方工具列 > Hive > HiveConfig 中點擊 Optional,然後在 Funtap 的 appKey 項目輸入發放的金鑰。

步驟 4. 確認 Funtap 登入動作

在 Appraisal Build 中,請呼叫 Funtap 登入,確認登入畫面是否正常顯示且能成功登入。Hive SDK 已內建 Funtap SDK,呼叫 AuthV4.signIn() 時請使用 ProviderType.FUNTAP。登入成功後,發行商串接所需的後續處理會在 Funtap SDK 內部自動進行。

Caution

ProviderType.FUNTAP 登入僅用於 Appraisal Build。Service Build 不使用此登入類型。

using hive;

AuthV4.signIn(AuthV4.ProviderType.FUNTAP, (ResultAPI result, AuthV4.PlayerInfo playerInfo) => {
    if (result.isSuccess()) {
        // ProviderType FUNTAP 登入成功
    }
});
#include <HIVE_SDK_Plugin/HIVE_CPP.h>

AuthV4::signIn(ProviderType::FUNTAP, [=](ResultAPI const & result, PlayerInfo const & playerInfo) {
    if (result.isSuccess()) {
        // ProviderType FUNTAP 登入成功
    }
});
import com.hive.AuthV4
import com.hive.ResultAPI

AuthV4.signIn(AuthV4.ProviderType.FUNTAP, object : AuthV4.AuthV4SignInListener {
    override fun onAuthV4SignIn(result: ResultAPI, playerInfo: AuthV4.PlayerInfo?) {
        if (result.isSuccess) {
            // ProviderType FUNTAP 登入成功
        }
    }
})
import com.hive.AuthV4;
import com.hive.ResultAPI;

AuthV4.signIn(AuthV4.ProviderType.FUNTAP, (result, playerInfo) -> {
    if (result.isSuccess()) {
        // ProviderType FUNTAP 登入成功
    }
});

Service Build 套用方式

Service Build 是在取得越南發行許可後實際營運服務的建置。在此建置中,請使用服務用 Funtap 模組與 token 設定。

事前準備

在開始 Service Build 工作前,必須先向 Funtap 取得服務用 token。Native 請將此值輸入至 hive_config.xml,Unity 請在 上方工具列 > Hive > HiveConfig > Optional 的 Funtap token 項目中輸入此值。若未準備好該值,則無法完成步驟 2。

Note

Hive 控制台 > 佈建 > SDK 設定 中可針對 Hive SDK v4 Android 控制登入後是否顯示 Funtap 身分驗證。

Service Build 功能需先完成遊戲中已套用的登入流程後再使用。登入成功後,請將 PlayerInfo 回應中取得的 PlayerID 作為後續 Funtap API 的 userId 使用。

步驟 1. 設定 Funtap 程式庫

Native 請在模組層級的 build.gradle 檔案中新增服務用相依性。

// Funtap Service 模組
implementation "com.com2us.android.hive:hive-authv4-provider-funtap"

Unity 請在 上方工具列 > Hive 中點擊 ExternalDependency,然後勾選 Funtap 項目。

步驟 2. 套用 Funtap 發行商設定值(token)

Native 請在 hive_config.xml 檔案中新增從 Funtap 發行商取得的 token

<funtap token="YOUR_TOKEN" />

Unity 請在 上方工具列 > Hive > HiveConfig 中點擊 Optional,然後在 Funtap 的 token 項目輸入發放的金鑰。

步驟 3. 確認是否處於政府審查期間

在 Service Build 中決定是否顯示手動資訊更新選單前,必須先確認使用者已成功登入。登入後開啟角色資訊畫面或設定畫面時,呼叫 ProviderFuntap.isFuntapUnderGovernmentReview() 以確認是否正在進行審查。若結果為 true,表示處於政府法規審查期間,因此 Hive SDK 會在登入後立即自動顯示如下的 WebView 形式身分驗證畫面。在此情況下,不另行顯示手動資訊更新 UI。

身分驗證彈出視窗畫面範例

結果為 false 時,請進行下一個步驟。

using hive;

bool result = ProviderFuntap.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();

步驟 4. 確認使用者資訊輸入是否完成

若步驟 3 的結果為 false,則需要判斷使用者是否可手動進行資訊更新。請將登入成功後於 PlayerInfo 回應中取得的 PlayerID 以字串形式傳入 userId。有關 PlayerInfo 回應值的詳細內容,請參閱 開始之前

ProviderFuntap.checkUserInfoComplete(userId) 呼叫結果傳回的 isCompleted 值若為 true,表示已完成資訊輸入,因此不顯示 UI。若 isCompleted 值為 false,則在下一個步驟提供資訊更新 UI。

using hive;

string userId = "USER_ID";

ProviderFuntap.checkUserInfoComplete(userId, (ResultAPI result, bool isCompleted) => {
    if (result.isSuccess()) {
        // 若 isCompleted 為 false,則顯示資訊更新 UI
    }
});
#include <HIVE_SDK_Plugin/HIVE_CPP.h>

std::string userId = "USER_ID";

ProviderFuntap::checkUserInfoComplete(userId, [=](ResultAPI const & result, bool isCompleted) {
    if (result.isSuccess()) {
        // 若 isCompleted 為 false,則顯示資訊更新 UI
    }
});
import com.hive.ProviderFuntap
import com.hive.ResultAPI

val userId = "USER_ID"

ProviderFuntap.checkUserInfoComplete(userId) { result: ResultAPI, isCompleted: Boolean ->
    if (result.isSuccess) {
        // 若 isCompleted 為 false,則顯示資訊更新 UI
    }
}
import com.hive.ProviderFuntap;
import com.hive.ResultAPI;

String userId = "USER_ID";

ProviderFuntap.checkUserInfoComplete(userId, (result, isCompleted) -> {
    if (result.isSuccess()) {
        // 若 isCompleted 為 false,則顯示資訊更新 UI
    }
});

步驟 5. 顯示資訊更新 UI

若步驟 4 中的 isCompleted 值為 false,請在角色資訊畫面或設定畫面提供使用者可自行選擇的選單。當使用者選擇該選單時,呼叫 ProviderFuntap.showUpdateUserInfo(userId) 開啟資訊更新畫面。

using hive;

string userId = "USER_ID";

ProviderFuntap.showUpdateUserInfo(userId, (ResultAPI result) => {
    if (result.isSuccess()) {
        // API 呼叫成功
    }
});
#include <HIVE_SDK_Plugin/HIVE_CPP.h>

std::string userId = "USER_ID";

ProviderFuntap::showUpdateUserInfo(userId, [=](ResultAPI const & result) {
    if (result.isSuccess()) {
        // API 呼叫成功
    }
});
import com.hive.ProviderFuntap
import com.hive.ResultAPI

val userId = "USER_ID"

ProviderFuntap.showUpdateUserInfo(userId) { result: ResultAPI ->
    if (result.isSuccess) {
        // API 呼叫成功
    }
}
import com.hive.ProviderFuntap;
import com.hive.ResultAPI;

String userId = "USER_ID";

ProviderFuntap.showUpdateUserInfo(userId, (result) -> {
    if (result.isSuccess()) {
        // API 呼叫成功
    }
});