Classic/VPC 환경에서 이용 가능합니다.
Android 환경을 위한 GAMEPOT Android SDK 사용법을 안내합니다. SDK를 설치하고 환경을 구성함으로써 게임과 대시보드를 연동할 수 있습니다.
요구 사양
Android용 GAMEPOT SDK를 사용하기 위한 요구 사양은 다음과 같습니다.
- 최소 사양은 Android level 24 이상입니다. 하위 버전 지원이 필요하면 문의채널로 문의해 주십시오.
SDK 설치 및 환경 구성
Android SDK를 설치한 후 환경을 구성하여 GAMEPOT 대시보드와 게임을 연동하고 게임 개발에 필요한 기능을 사용할 수 있습니다.
GAMEPOT SDK에서 지원하는 언어는 아래와 같습니다.
- 한국어, 영어, 이탈리아어, 태국어, 베트남어, 일본어, 중국어(간체/번체), 인도네시아어, 독일어, 스페인어, 프랑스어
게임팟 초기화 시 등록한 언어로 자동 표기되며, 미지원 언어는 영어로 표시됩니다.
SDK 설치
GAMEPOT Android SDK를 설치하고 프로젝트를 구성하려면 다음 절차를 따르십시오.
build.gradle또는build.gradle.kts파일에 NBase SDK를 추가해 주십시오.- GAMEPOT 3.0부터는 Gradle 설정으로 외부 라이브러리를 간편하게 통합할 수 있습니다.
Kotlin Gradle 설정
Kotlin DSL을 사용하는 프로젝트에서는 다음 설정을 추가해 주십시오.
- 프로젝트 루트
build.gradle.kts파일에 다음 설정을 추가해 주십시오.
Kotlin:
dependencyResolutionManagement {
repositories {
...
google()
maven(url = "https://repo.nbase.io/repository/nbase-releases")
}
}
- 앱 모듈(
Module: app)의build.gradle.kts파일에 다음 설정을 추가해 주십시오.
Kotlin:
dependencies {
...
implementation("io.nbase:nbasesdk:latest.release")
}
구글 로그인과 구글 스토어 결제를 함께 사용하는 경우에는 다음 예시를 참고해 주십시오.
Kotlin:
dependencies {
...
implementation("io.nbase:nbasesdk:latest.release")
implementation("io.nbase:nbase-adapter-provider-google:latest.release")
implementation("io.nbase:nbase-adapter-billing-googleplay:latest.release")
}
Java Gradle 설정
Groovy DSL을 사용하는 프로젝트에서는 다음 설정을 추가해 주십시오.
- 프로젝트 루트
build.gradle파일에 다음 설정을 추가해 주십시오.
Groovy:
allprojects {
repositories {
...
google()
maven { url "https://repo.nbase.io/repository/nbase-releases" }
}
}
- 앱 모듈(
Module: app)의build.gradle파일에 다음 설정을 추가해 주십시오.
Groovy:
dependencies {
...
implementation("io.nbase:nbasesdk:latest.release")
}
구글 로그인과 구글 스토어 결제를 함께 사용하는 경우에는 다음 예시를 참고해 주십시오.
Groovy:
dependencies {
...
implementation("io.nbase:nbasesdk:latest.release")
implementation("io.nbase:nbase-adapter-provider-google:latest.release")
implementation("io.nbase:nbase-adapter-billing-googleplay:latest.release")
}
지원 가능한 AOS 종속 모듈은 다음과 같습니다.
| Name | Description | Dependency modules |
|---|---|---|
| io.nbase:nbasesdk | 게임팟 기본 모듈 | X |
| io.nbase:nbase-adapter-provider-google | 구글 로그인 | X |
| io.nbase:nbase-adapter-provider-apple | 애플 로그인 | X |
| io.nbase:nbase-adapter-provider-facebook | 페이스북 로그인 | com.facebook.android:facebook-login:latest.release |
| io.nbase:nbase-adapter-provider-kakao | 카카오 로그인 | X |
| io.nbase:nbase-adapter-provider-line | 라인 로그인 | X |
| io.nbase:nbase-adapter-provider-naver | 네이버 로그인 | X |
| io.nbase:nbase-adapter-provider-huawei | 화웨이 로그인 | X |
| io.nbase:nbase-adapter-provider-playgame | 구글플레이게임 로그인 | X |
| io.nbase:nbase-adapter-provider-x | X 로그인 | X |
| io.nbase:nbase-adapter-billing-googleplay | 구글 스토어 | com.android.billingclient:billing:8.0.0 |
| io.nbase:nbase-adapter-billing-onestore | 원스토어 | X |
| io.nbase:nbase-adapter-billing-galaxy | 갤럭시 스토어 | X |
| io.nbase:nbase-adapter-billing-huawei | 화웨이 스토어 | X |
게스트 로그인의 경우 기본 모듈에 포함되어 있습니다.
사전 준비
SDK를 적용하기 전에 필요한 필수 설정 항목을 다음과 같이 확인해 주십시오.
- 프로젝트 ID와 프로젝트 키는 대시보드 > 프로젝트 설정에서 복사해 주십시오.
- 로그인, 스토어, 연동에 대한 환경 설정은 대시보드 > 프로젝트 설정에서 수행해 주십시오.
- 로그인별로 로그인 수단별 환경 설정을 참조하여 콘솔에 설정하고 대시보드에 추가해 주십시오.
- 인앱 결제를 사용하는 경우 스토어별 환경 설정을 참조하여 콘솔에 설정하고 대시보드에 추가해 주십시오.
- 인앱 결제를 위한 각 스토어의 아이템을 대시보드 > 결제 > 인앱에서 등록해 주십시오.
초기화
초기화를 수행하려면 게임을 시작할 때 로드되는 첫 장면에 사용되는 개체에 아래 코드를 추가해 주십시오.
Kotlin:
import android.util.Log
import com.nbase.sdk.NBase
import com.nbase.sdk.Store
NBase.initialize(activity, projectId, projectKey, storeId, language, region) { init, e ->
if (e != null) {
Log.e("NBase", e.message ?: "initialize fail")
} else {
Log.i("NBase", "initialize success: ${init.toString()}")
}
}
Java:
import android.util.Log;
import com.nbase.sdk.NBase;
import com.nbase.sdk.Store;
NBase nBase = NBase.INSTANCE;
nBase.initialize(activity, projectId, projectKey, Store.GOOGLE, language, region, (init, e) -> {
if (e != null) {
Log.e("NBase", "initialize fail: " + e.getMessage());
} else {
Log.i("NBase", "initialize success: " + init.toString());
}
return null;
});
- Parameters
다음 표는 초기화에 필요한 매개변수를 설명합니다.
| Key | Type | Description | Required |
|---|---|---|---|
| projectId | String | 프로젝트 ID (대시보드 → 프로젝트 설정) | O |
| projectKey | String | 프로젝트 키 (대시보드 → 프로젝트 설정) | O |
| storeId | String | 스토어 ID (아래 표 참고) | O |
| language | String | 언어 코드(en, ko, jp 등) | O |
| region | String | 리전명(kr, jp, sg, us, eu, preview) | O |
스토어 식별자는 다음 표를 참고해 주십시오.
| Key | Description |
|---|---|
| Store.GOOGLE | 구글 스토어 |
| Store.ONE | 원스토어 |
| Store.GALAXY | 갤럭시 스토어 |
| Store.AMAZON | 아마존 스토어 |
| Store.HUAWEI | 화웨이 스토어 |
- Callback
다음 표는 초기화 콜백으로 전달되는 정보를 설명합니다.
| Key | Type | Description |
|---|---|---|
| status | Boolean | 상태 |
| language | String | 언어 |
| country | String | 국가 |
| remote_ip | String | IP |
| platform | String | 플랫폼 |
| sandbox | Boolean | 샌드박스 여부 |
로그인 기능
로그인 기능을 이용하여 다양한 인증 수단으로 사용자를 인증하는 방법을 설명합니다.
로그인 기능 사용
개발사가 구현한 로그인 UI에서 SDK 로그인 기능을 호출하려면 다음 코드를 참고해 주십시오.
Kotlin:
import android.content.Intent
import android.util.Log
import com.nbase.sdk.NBase
import com.nbase.sdk.Provider
NBase.signIn(activity, Provider.GOOGLE.toString()) { user, e ->
if (e != null) {
if (e.errorCode == 414) { // Maintenance
// Maintenance
Log.e("NBase", "Maintenance: " + e.message) // Maintenance message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus) { status, err ->
// Popup handling
}
*/
} else if (e.errorCode == 413) { // Update
// Update
Log.e("NBase", "Update: " + e.message) // Update message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus) { status, err ->
// Popup handling
}
*/
} else {
// signIn Failed
Log.e("NBase", "signIn Failed: " + e.errorCode + ", " + e.message)
}
} else {
// signIn Success
Log.e("NBase", "signIn Success: " + user.toString())
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
NBase.onActivityResult(requestCode, resultCode, data)
}
Java:
import android.content.Intent;
import android.util.Log;
import com.nbase.sdk.NBase;
import com.nbase.sdk.Provider;
NBase nBase = NBase.INSTANCE;
nBase.signIn(activity, Provider.GOOGLE.toString(), (user, e) -> {
if (e != null) {
if (e.getErrorCode() == 414) { // Maintenance
// Maintenance
Log.e("NBase", "Maintenance: " + e.getMessage()) // Maintenance message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus, (status, err) -> {
// Popup handling
}
*/
} else if (e.getErrorCode() == 413) { // Update
// Update
Log.e("NBase", "Update: " + e.getMessage()) // Update message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus, (status, err) -> {
// Popup handling
}
*/
} else {
// signIn Failed
Log.e("NBase", "signIn Failed: " + e.getErrorCode() + ", " + e.getMessage());
}
} else {
// signIn Success
Log.e("NBase", "signIn Success: " + user.toString());
}
return null;
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
nBase.onActivityResult(requestCode, resultCode, data);
}
업데이트 또는 점검 시 SDK에서 제공하는 자체 팝업을 사용하려면 아래 코드를 추가해 주십시오.
Kotlin:
NBase.showAppStatusPopup(activity, appStatus){ status, e ->
if (status.close){
// App Close
}
else if (status.next){
// Next, Optional update
}
}
Java:
NBase nBase = NBase.INSTANCE;
nBase.showAppStatusPopup(activity, appStatus){ status, e ->
if (status.getClose()){
// App Close
}
else if (status.getNext()){
// Next, Optional update
}
}
- Provider
다음 표는 로그인 기능에서 사용할 서비스 타입을 설명합니다.
| Key | Description |
|---|---|
| Provider.GOOGLE | 구글 |
| Provider.ANONYMOUS | 게스트 |
| Provider.FACEBOOK | 페이스북 |
| Provider.APPLE | 애플 |
| Provider.KAKAO | 카카오 |
| Provider.GOOGLEPLAY | 구글플레이게임 |
| Provider.STEAM | 스팀 |
| Provider.X | X |
| Provider.LINE | 라인 |
| Provider.NAVER | 네이버 |
| Provider.GITHUB | 깃허브 |
| Provider.MICROSOFT | 마이크로소프트 |
| Provider.HUAWEI | 화웨이 |
- User
다음 표는 User 객체의 필드를 설명합니다.
| Key | Type | Description |
|---|---|---|
| id | string | 유저의 고유 ID |
| socialId | string | 소셜 ID |
| name | string | 이름 (제공해 주는 경우) |
| string | 이메일 (제공해 주는 경우) | |
| token | string | 토큰 |
| age | int | 나이 (제공해 주는 경우) |
| profile | string | 프로필 (제공해 주는 경우) |
| customField | string | 커스텀 필드 |
| isSignUp | bool | 가입 여부 |
| appStatus | AppStatus | 점검/업데이트 상태 |
- AppStatus
다음 표는 AppStatus 객체의 필드를 설명합니다.
| Key | Type | Description |
|---|---|---|
| message | string | 메시지 |
| startedAt | long | 시작 시간 |
| endedAt | long | 종료 시간 |
| currentAppVersion | string | 현재 앱 버전 |
| updateAppVersion | string | 업데이트 앱 버전 |
| currentAppVersionCode | string | 현재 앱 버전 코드 |
| updateAppVersionCode | string | 업데이트 앱 버전 코드 |
| isForce | bool | 강제 업데이트 여부 |
| url | string | 점검/업데이트 등록된 URL |
SDK 자체 제공 로그인 UI
GAMEPOT SDK가 제공하는 완성된 형태의 로그인 UI를 사용할 수 있습니다.
SDK가 제공하는 로그인 UI를 호출하려면 아래 코드를 사용해 주십시오.
Kotlin:
NBase.openSignInUI(activity) { user, e ->
if (e != null) {
if (e.errorCode == 414) { // Maintenance
// Maintenance
Log.e("NBase", "Maintenance: " + e.message) // Maintenance message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus) { status, err ->
// Popup handling
}
*/
} else if (e.errorCode == 413) { // Update
// Update
Log.e("NBase", "Update: " + e.message) // Update message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus) { status, err ->
// Popup handling
}
*/
} else {
// signIn Failed
Log.e("NBase", "signIn Failed: " + e.errorCode + ", " + e.message)
}
} else {
// signIn Success
Log.e("NBase", "signIn Success: " + user.toString())
}
}
Java:
NBase nBase = NBase.INSTANCE;
nBase.openSignInUI(activity, (user, e) -> {
if (e != null) {
if (e.getErrorCode() == 414) { // Maintenance
// Maintenance
Log.e("NBase", "Maintenance: " + e.getMessage()) // Maintenance message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus, (status, err) -> {
// Popup handling
}
*/
} else if (e.getErrorCode() == 413) { // Update
// Update
Log.e("NBase", "Update: " + e.getMessage()) // Update message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus, (status, err) -> {
// Popup handling
}
*/
} else {
// signIn Failed
Log.e("NBase", "signIn Failed: " + e.getErrorCode() + ", " + e.getMessage());
}
} else {
// signIn Success
Log.e("NBase", "signIn Success: " + user.toString());
}
return null;
});
자동 로그인 (옵션)
초기화한 후 마지막으로 로그인한 인증 수단으로 자동 로그인을 시도할 수 있습니다. 자동 로그인을 시도하기 전에 마지막 로그인 Provider 타입을 확인하는 것이 좋습니다.
Kotlin:
// 마지막 로그인 Provider 타입 확인
val lastProviderType = NBase.getLastProviderType()
if (lastProviderType != Provider.NONE) {
// 유효한 Provider가 있을 때만 자동 로그인 시도
NBase.signInLastLoggedIn(activity) { user, e ->
if (e != null) {
if (e.errorCode == 414) { // Maintenance
// Maintenance
Log.e("NBase", "Maintenance: " + e.message) // Maintenance message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus) { status, err ->
// Popup handling
}
*/
} else if (e.errorCode == 413) { // Update
// Update
Log.e("NBase", "Update: " + e.message) // Update message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus) { status, err ->
// Popup handling
}
*/
} else {
// signIn Failed
Log.e("NBase", "signIn Failed: " + e.errorCode + ", " + e.message)
}
} else {
// signIn Success
Log.e("NBase", "signIn Success: " + user.toString())
}
}
} else {
// 마지막 로그인 정보가 없음
Log.e("NBase", "No last login provider found")
}
Java:
NBase nBase = NBase.INSTANCE;
// 마지막 로그인 Provider 타입 확인
Provider lastProviderType = nBase.getLastProviderType();
if (lastProviderType != Provider.NONE) {
// 유효한 Provider가 있을 때만 자동 로그인 시도
nBase.signInLastLoggedIn(activity, (user, e) -> {
if (e != null) {
if (e.getErrorCode() == 414) { // Maintenance
// Maintenance
Log.e("NBase", "Maintenance: " + e.getMessage()) // Maintenance message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus, (status, err) -> {
// Popup handling
}
*/
} else if (e.getErrorCode() == 413) { // Update
// Update
Log.e("NBase", "Update: " + e.getMessage()) // Update message
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, user?.appStatus, (status, err) -> {
// Popup handling
}
*/
} else {
// signIn Failed
Log.e("NBase", "signIn Failed: " + e.getErrorCode() + ", " + e.getMessage());
}
} else {
// signIn Success
Log.e("NBase", "signIn Success: " + user.toString());
}
return null;
});
} else {
// 마지막 로그인 정보가 없음
Log.e("NBase", "No last login provider found");
}
- getLastProviderType()
마지막으로 로그인한 Provider 타입을 반환합니다.
다음 표는 getLastProviderType() 메서드의 반환 값을 설명합니다.
| Return Type | Description |
|---|---|
| Provider | 마지막 로그인 Provider 타입 |
- signInLastLoggedIn() Parameter
마지막으로 로그인한 인증 수단으로 자동 로그인을 시도합니다.
다음 표는 signInLastLoggedIn() 메서드의 매개변수를 설명합니다.
| Key | Type | Description | Required |
|---|---|---|---|
| activity | Activity | 현재 액티비티 | O |
- Callback
다음 표는 자동 로그인 콜백으로 전달되는 값을 설명합니다.
| Key | Type | Description |
|---|---|---|
| user | User | 로그인 성공 시 사용자 정보 |
| error | Error | 로그인 실패 시 에러 정보 |
로그아웃
게임팟 사용자 계정을 로그아웃하려면 아래 코드를 사용해 주십시오.
Kotlin:
NBase.signOut(activity) { status, e ->
if (e != null) {
Log.e("NBase", "signOut Fail")
Log.e("NBase", "error.message : " + e.message.toString())
} else {
Log.e("NBase", "signOut")
Log.e("NBase", "status : " + status.toString())
// 로그아웃 성공 후 처리 로직
}
}
Java:
NBase nBase = NBase.INSTANCE;
nBase.signOut(activity, (status, e) -> {
if (e != null) {
Log.e("NBase", "signOut Fail");
Log.e("NBase", "error.message : " + e.getMessage());
} else {
Log.e("NBase", "signOut");
Log.e("NBase", "status : " + status.toString());
// 로그아웃 성공 후 처리 로직
}
return null;
});
- Parameter
다음 표는 getLastProviderType() 메서드의 매개변수를 설명합니다.
| Key | Type | Description | Required |
|---|---|---|---|
| activity | Activity | 현재 액티비티 | O |
- Callback
다음 표는 로그아웃 콜백으로 전달되는 값을 설명합니다.
| Key | Type | Description |
|---|---|---|
| status | Boolean | 로그아웃 성공 여부 |
회원 탈퇴
SDK 회원탈퇴 기능을 사용하려면 아래 코드를 사용해 주십시오.
Kotlin:
NBase.deleteMember(providerId) { status, e ->
if (e != null) {
Log.e("NBase", "deleteMember Fail")
Log.e("NBase", "error.message : " + e.message.toString())
} else {
Log.e("NBase", "deleteMember")
Log.e("NBase", "status : " + status.toString())
// 회원 탈퇴 성공 후 처리 로직
}
}
Java:
NBase nBase = NBase.INSTANCE;
nBase.deleteMember(providerId, (status, e) -> {
if (e != null) {
Log.e("NBase", "deleteMember Fail");
Log.e("NBase", "error.message : " + e.getMessage());
} else {
Log.e("NBase", "deleteMember");
Log.e("NBase", "status : " + status.toString());
// 회원 탈퇴 성공 후 처리 로직
}
return null;
});
- Parameters
다음 표는 회원 탈퇴 시 전달해야 하는 매개변수를 설명합니다.
| Key | Type | Description | Required |
|---|---|---|---|
| providerId | Provider | 로그인한 Provider 타입(예: Provider.GOOGLE, Provider.ANONYMOUS 등) | O |
- Callback
다음 표는 회원 탈퇴 콜백 값을 설명합니다.
| Key | Type | Description |
|---|---|---|
| status | Boolean | 회원 탈퇴 성공 여부 |
자체 아이디 비밀번호 인증 (옵션)
사용자가 이메일 주소와 비밀번호를 사용하여 로그인할 수 있게 하는 인증 메서드입니다. 사용자의 이메일 주소와 비밀번호를 기반으로 사용자 인증을 수행합니다.
Kotlin:
NBase.signInWithPassword(activity, username, password) { user, e ->
if (e != null) {
Log.e("NBase", e.message)
} else {
Log.e("NBase", user)
}
}
Java:
NBase nBase = NBase.INSTANCE;
nBase.signInWithPassword(activity, username, password, (user, e) -> {
if (e != null) {
Log.e("NBase", "signInWithPassword fail: " + e.getMessage());
} else {
Log.e("NBase", "signInWithPassword success: " + user.toString());
}
return null;
});
자격 증명으로 로그인 (옵션)
외부에서 획득한 소셜 계정의 자격 증명(Access Token)을 사용하여 로그인하려면 아래 코드를 사용해 주십시오.
Kotlin:
NBase.signInWithCredential(activity, Provider.GOOGLE.ToString(), providerToken) { user, e ->
if (e != null) {
Log.e("NBase", e.message)
} else {
Log.e("NBase", user)
}
}
Java:
NBase nBase = NBase.INSTANCE;
nBase.signInWithCredential(activity, Provider.GOOGLE.toString(), providerToken, (user, e) -> {
if (e != null) {
Log.e("NBase", "signInWithCredential fail: " + e.getMessage());
} else {
Log.e("NBase", "signInWithCredential success: " + user.toString());
}
return null;
});
- Parameter
다음 표는 자격 증명 로그인에 필요한 매개변수를 설명합니다.
| Key | Type | Description | Required |
|---|---|---|---|
| activity | Activity | 현재 액티비티 | O |
| providerId | Provider | 연동할 Provider 타입 | O |
| providerToken | String | 소셜 계정의 Access Token | O |
- Callback
다음 표는 자격 증명 로그인 콜백 값을 설명합니다.
| Key | Type | Description |
|---|---|---|
| user | User | 로그인 성공 시 사용자 정보 |
| error | Error | 로그인 실패 시 에러 정보 |
외부 계정 연동 기능
GAMEPOT 사용자 계정에 외부 소셜 계정을 연동하고 관리하는 기능을 안내합니다.
외부 계정 연동 기능 사용
현재 게임팟 사용자 계정에 다른 소셜 계정을 연동하려면 아래 코드를 사용해 주십시오.
Kotlin:
NBase.createLinking(activity, providerId) { linkingId, e ->
if (e != null) {
Log.e("NBase", "createLinking Fail")
Log.e("NBase", "error.message : " + e.message.toString())
} else {
Log.e("NBase", "createLinking")
Log.e("NBase", "linkingId : " + linkingId.toString())
// 계정 연동 성공 후 처리 로직
}
}
Java:
NBase nBase = NBase.INSTANCE;
nBase.createLinking(activity, providerId, (linkingId, e) -> {
if (e != null) {
Log.e("NBase", "createLinking Fail");
Log.e("NBase", "error.message : " + e.getMessage());
} else {
Log.e("NBase", "createLinking");
Log.e("NBase", "linkingId : " + linkingId);
// 계정 연동 성공 후 처리 로직
}
return null;
});
- Parameter
다음 표는 계정 연동에 필요한 매개변수를 설명합니다.
| Key | Type | Description | Required |
|---|---|---|---|
| activity | Activity | 현재 액티비티 | O |
| providerId | Provider | 연동할 Provider 타입 (예: Provider.GOOGLE, Provider.FACEBOOK 등) | O |
- Callback
다음 표는 계정 연동 콜백 값을 설명합니다.
| Key | Type | Description |
|---|---|---|
| linkingId | String | 연동 성공 시 반환되는 연동 ID |
연동 리스트 확인
현재 게임팟 사용자 계정에 연동된 소셜 계정 목록을 확인하려면 아래 코드를 사용해 주십시오.
Kotlin:
NBase.getLinkedLists { linkings, e ->
if (e != null) {
Log.e("NBase", "getLinkedLists Fail")
Log.e("NBase", "error.message : " + e.message.toString())
} else {
Log.e("NBase", "getLinkedLists")
Log.e("NBase", "linkings : " + linkings.toString())
// 연동 목록 확인 후 처리 로직
}
}
Java:
NBase nBase = NBase.INSTANCE;
nBase.getLinkedLists((linkings, e) -> {
if (e != null) {
Log.e("NBase", "getLinkedLists Fail");
Log.e("NBase", "error.message : " + e.getMessage());
} else {
Log.e("NBase", "getLinkedLists");
Log.e("NBase", "linkings : " + linkings.toString());
// 연동 목록 확인 후 처리 로직
}
return null;
});
- Callback
다음 표는 계정 연동 목록 확인 시 제공되는 값을 설명합니다.
| Key | Type | Description |
|---|---|---|
| linkings | List |
연동된 계정 목록 |
- Linking
다음 표는 Linking 객체의 필드를 설명합니다.
| Key | Type | Description |
|---|---|---|
| id | String | 연동 ID (계정 연동 해제 시 사용) |
| username | String | 소셜 ID |
| provider | String | 소셜 provider 타입 |
연동 해제
현재 게임팟 사용자 계정에서 특정 소셜 계정 연동을 해제하려면 아래 코드를 사용해 주십시오.
Kotlin:
NBase.deleteLinking(linkingId) { status, e ->
if (e != null) {
Log.e("NBase", "deleteLinking Fail")
Log.e("NBase", "error.message : " + e.message.toString())
} else {
Log.e("NBase", "deleteLinking")
Log.e("NBase", "status : " + status.toString())
// 연동 해제 성공 후 처리 로직
}
}
Java:
NBase nBase = NBase.INSTANCE;
nBase.deleteLinking(linkingId, (status, e) -> {
if (e != null) {
Log.e("NBase", "deleteLinking Fail");
Log.e("NBase", "error.message : " + e.getMessage());
} else {
Log.e("NBase", "deleteLinking");
Log.e("NBase", "status : " + status.toString());
// 연동 해제 성공 후 처리 로직
}
return null;
});
- Parameter
다음 표는 계정 연동 해제에 필요한 매개변수를 설명합니다.
| Key | Type | Description | Required |
|---|---|---|---|
| linkingId | String | 해제할 연동 ID (createLinking 또는 getLinkedLists에서 획득) | O |
- Callback
다음 표는 계정 연동 해제 콜백 값을 설명합니다.
| Key | Type | Description |
|---|---|---|
| status | Boolean | 연동 해제 성공 여부 |
앱 상태 확인
현재 클라이언트의 점검/업데이트 상태를 확인하려면 아래 코드를 사용해 주십시오.
Kotlin:
NBase.checkAppStatus(activity) { status, error ->
when (status) {
is NBaseAppStatus.Maintenance -> {
// Maintenance
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, status) { popupStatus, e ->
// Popup handling
}
*/
}
is NBaseAppStatus.Update -> {
// Update
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBase.showAppStatusPopup(activity, status) { popupStatus, e ->
// Popup handling
}
*/
}
null -> {
// AppStatus Success or Error
if (error != null) {
Log.e("NBase", "checkAppStatus error: $error")
} else {
Log.e("NBase", "checkAppStatus success")
}
}
}
}
Java:
NBase nBase = NBase.INSTANCE;
nBase.checkAppStatus(activity, (status, error) -> {
if (status instanceof NBaseAppStatus.Maintenance) {
// Maintenance
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
nBase.showAppStatusPopup(activity, status, (popupStatus, e) -> {
// Popup handling
});
*/
} else if (status instanceof NBaseAppStatus.Update) {
// Update
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
nBase.showAppStatusPopup(activity, status, (popupStatus, e) -> {
// Popup handling
});
*/
} else if (status == null) {
// AppStatus Success or Error
if (error != null) {
Log.e("NBase", "checkAppStatus error: " + error.toString());
} else {
Log.e("NBase", "checkAppStatus success");
}
}
return null;
});
문제 해결
자주 발생하는 오류와 해결 방법을 안내합니다.
Q. 안드로이드에서 androidx.security.crypto.MasterKeys 클래스를 찾지 못했다는 오류가 발생합니다.
A. MasterKeys 클래스를 찾지 못해 발생한 오류입니다. 다음 종속성을 build.gradle 또는 build.gradle.kts 파일에 추가해 주십시오.
Groovy:
implementation("androidx.security:security-crypto:1.0.0")
Q. 구글 로그인 시 10: Developer console is not set up correctly. 오류가 발생합니다.
A. 구글 Cloud 콘솔에 등록된 웹 애플리케이션의 OAuth 2.0 Client ID와 Client Secret이 GAMEPOT 대시보드에 정확히 기입되었는지 확인해 주십시오.
Q. 구글 로그인 시 16: Cannot find a matching credential. 오류가 발생합니다.
A. 구글 Cloud 콘솔에 등록된 OAuth 2.0 안드로이드 클라이언트의 패키지 이름과 앱의 SHA-1 값이 일치하는지 확인해 주십시오.