跳转至

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 项中输入该值。如果该值尚未准备好,则无法完成 Step 3。

Step 1. 配置 Funtap-Appraisal 库

在 Native 中,请在模块级 build.gradle 文件中添加 Appraisal 用依赖项。

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

在 Unity 中,请在 顶部工具栏 > Hive 中点击 ExternalDependency,然后勾选 Funtap-Appraisal 项。

Step 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" />

Step 3. 应用 Funtap 发布商配置值(appKey)

在 Native 中,请在 hive_config.xml 文件中添加从 Funtap 发布商获取的 appKey

<funtap-appraisal appKey="YOUR_APP_KEY" />

在 Unity 中,请在 顶部工具栏 > Hive > HiveConfig 中点击 Optional,然后在 Funtap 的 appKey 项中输入已获取的值。

Step 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 项中输入该值。如果该值尚未准备好,则无法完成 Step 2。

Note

Hive 控制台 > Provisioning > SDK 设置 中,可仅针对 Hive SDK v4 Android 控制登录后是否显示 Funtap 实名认证。

Service Build 功能需要在游戏先完成已接入的登录流程后再使用。登录成功后,将 PlayerInfo 响应中返回的 PlayerID 作为后续 Funtap API 的 userId 使用。

Step 1. 配置 Funtap 库

在 Native 中,请在模块级 build.gradle 文件中添加服务用依赖项。

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

在 Unity 中,请在 顶部工具栏 > Hive 中点击 ExternalDependency,然后勾选 Funtap 项。

Step 2. 应用 Funtap 发布商配置值(token)

在 Native 中,请在 hive_config.xml 文件中添加从 Funtap 发布商获取的 token

<funtap token="YOUR_TOKEN" />

在 Unity 中,请在 顶部工具栏 > Hive > HiveConfig 中点击 Optional,然后在 Funtap 的 token 项中输入已获取的值。

Step 3. 确认是否处于政府审查期

在 Service Build 中,要决定是否显示手动信息更新菜单,用户必须先处于登录成功状态。登录后,在打开角色信息界面或设置界面时,调用 ProviderFuntap.isFuntapUnderGovernmentReview() 以确认是否正在进行审查。如果结果为 true,则表示当前处于政府监管审查期间,Hive SDK 会在登录后自动按如下方式显示 WebView 形式的实名认证页面。此时无需单独显示手动信息更新 UI。

实名认证弹窗界面示例

如果结果为 false,则进入下一 Step。

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();

Step 4. 确认用户信息输入是否完成

如果 Step 3 的结果为 false,则需要判断用户是否可以手动进行信息更新。userId 需要传入登录成功后从 PlayerInfo 响应中收到的字符串形式的 PlayerID。有关 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
    }
});

Step 5. 显示信息更新 UI

如果 Step 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 调用成功
    }
});