콘텐츠로 이동

Funtap 퍼블리셔 연동 가이드

개요

Funtap 퍼블리셔 Software Development Kit(SDK) 연동 가이드는 Android 게임에 이 SDK를 적용해 베트남 퍼블리싱 심사용 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 SDK가 로그인 후 본인 인증 과정을 자동으로 처리하고, 점검 기간이 아닐 때만 게임 클라이언트에서 사용자가 직접 진입할 수 있는 정보 업데이트 기능을 제공해야 합니다. Hive 콘솔 > 프로비저닝 > SDK 설정에서 Hive SDK v4 Android에 한해 로그인 이후 본인 인증 노출 여부를 제어할 수 있습니다.

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 호출 성공
    }
});