Unity SDK
Unity에서 게임을 개발하기 위한 GAMEPOT Unity SDK 사용법에 대해 설명합니다. SDK를 설치하고 환경을 구성함으로써 게임과 대시보드를 연동할 수 있습니다.
요구 사양
Unity용 GAMEPOT SDK를 사용하기 위한 요구 사양은 다음과 같습니다.
최소 사양: 2020.3.0 이상
하위 버전의 Unity 지원이 필요하면 [email protected] 메일로 문의해 주시기 바랍니다.
SDK 설치 및 환경 구성
GAMEPOT Unity SDK를 설치한 후 환경을 구성하여 GAMEPOT 대시보드와 게임을 연동하고 게임 개발에 필요한 기능을 사용할 수 있습니다.
GAMEPOT SDK에서 지원하는 언어는 아래와 같습니다.
한국어, 영어, 이탈리아어, 태국어, 베트남어, 일본어, 중국어(간체/번체), 인도네시아어, 독일어, 스페인어, 프랑스어
앱 실행 시 디바이스 언어에 따라 SDK 내 지원 언어로 표기되며 미지원 언어는 영어로 표기됩니다.
SDK 설치
GAMEPOT Unity SDK를 설치하고 Unity에서 프로젝트를 구성하는 방법은 다음과 같습니다.
유니티 공식 배포 깃헙 에서 최신 버전을 다운로드해 주십시오.
Unity에서 Assets > Import Package > Custom Package... 메뉴를 차례대로 클릭한 후 nbase-unity-plugin-[version].unitypackage 파일을 불러와 주십시오.
게임팟 3.0 부터는 maven 배포와 cocoapods 을 통해 배포되며 기기별로 간단한 설정으로 수십 가지의 외부 라이브러리와 통합이 가능합니다.
External Dependency Manager for Unity를 포함하여 설치되며, 편리하게 Android, iOS 패키지를 설치할 수 있습니다.
Android Gradle 설정
Player Settings에서 Publishing Settings에 Custom Main Gradle Template, Custom Gradle Properties Template에 체크해 주십시오.
Minimum API Level 24 으로 상향해 주십시오.
Assets > External Dependency Manager > Android Resolver > Settings 메뉴를 차례대로 클릭한 후 Enable Auto-Resolution, Explode AARs 항목에 체크를 해제해 주십시오.
이미지와 같이 해당 파일을 에디터를 통해 열어 주십시오. 아래와 같은 파일을 확인할 수 있습니다.
다음은 NBase SDK 사용에 기본으로 필요한 Dependency package 를 정의해 둔 파일입니다. 추가적인 기능을 사용할 경우, 아래 파일에 추가하면 Android, iOS 에서 모듈을 사용할 수 있습니다.
Dependency modules 란? 외부 SDK를 사용하기 위한 모듈로 구글 로그인의 경우 com.google.android.gms:play-services-auth 와 같이 구글에서 제공하는 모듈을 함께 설치해야 합니다. 만약 업데이트된 경우 마이너 버전의 업데이트는 상시로 가능하지만 메이저 업데이트의 경우 문의 후에 사용해 주시기 바랍니다.
<?xml version="1.0" encoding="UTF-8"?>
<dependencies>
<androidPackages>
<androidPackage spec="io.nbase:nbasesdk:3.0.87"/>
</androidPackages>
<iosPods>
<iosPod name="NBase" version="3.0.59" minTargetSdk="15.0" />
</iosPods>
</dependencies>
구글 로그인과 구글 스토어 결제를 사용하는 경우
<dependencies>
<androidPackages>
<androidPackage spec="io.nbase:nbasesdk:3.0.87"/>
<androidPackage spec="io.nbase:nbase-adapter-provider-google:3.0.10"/>
<androidPackage spec="io.nbase:nbase-adapter-billing-googleplay:3.0.6" />
</androidPackages>
<iosPods>
<iosPod name="NBase" version="3.0.59" minTargetSdk="15.0" />
<iosPod name="NBaseAdapterProviderGoogle" version="3.0.56" minTargetSdk="15.0" />
</iosPods>
</dependencies>
io.nbase:nbasesdk
3.0.87
게임팟 기본 모듈
X
io.nbase:nbase-adapter-provider-google
3.0.10
구글 로그인
X
io.nbase:nbase-adapter-provider-apple
3.0.6
애플 로그인
X
io.nbase:nbase-adapter-provider-facebook
3.0.4
페이스북 로그인
com.facebook.android:facebook-login:latest.release
io.nbase:nbase-adapter-provider-kakao
3.0.2
카카오 로그인
X
io.nbase:nbase-adapter-provider-line
3.0.2
라인 로그인
X
io.nbase:nbase-adapter-provider-naver
3.0.1
네이버 로그인
X
io.nbase:nbase-adapter-provider-huawei
3.0.1
화웨이 로그인
X
io.nbase:nbase-adapter-provider-playgame
3.0.3
구글플레이게임 로그인
X
io.nbase:nbase-adapter-provider-x
3.0.1
X 로그인
X
io.nbase:nbase-adapter-billing-googleplay
3.0.6
구글 스토어
com.android.billingclient:billing-ktx:7.1.1
io.nbase:nbase-adapter-billing-onestore
3.0.2
원스토어
X
io.nbase:nbase-adapter-billing-galaxy
3.0.3
갤럭시 스토어
X
io.nbase:nbase-adapter-billing-huawei
3.0.1
화웨이 스토어
X
이메일, 게스트 로그인의 경우 기본 모듈에 적용되어 있습니다.
Assets > External Dependency Manager > Android Resolver > Force Resolve를 클릭해 주십시오. Dependencies.xml에 정의를 한 뒤 Force Resolve를 하면 mainTemplate.gradle 파일에 정의한 내용이 implementation 으로 자동 정의가 되며, 해당 내용이 되어야 빌드 시에 관련 라이브러리들을 가져올 수 있습니다.
iOS 설정
/Assets/NBaseSDK/Editor/NBaseSDKDependencies.xml 파일을 오픈합니다.
"iosPods" 와 "/iosPods" 사이에 필요한 프레임워크를 추가해 주시면 됩니다. 기본적으로 필요한 프레임워크는 추가되어 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<dependencies>
<androidPackages>
...
</androidPackages>
<iosPods>
<iosPod name="NBase" version="3.0.59" minTargetSdk="15.0" />
</iosPods>
</dependencies>
만약 Firebase 와 같이 필요한 프레임워크를 설치하고자 하는 경우에도 아래와 같이 별도로 추가하시면 됩니다.
<iosPods>
...
<iosPod name="FirebaseMessaging" version="10.20.0" minTargetSdk="9.0" />
<iosPod name="Firebase/Analytics" version="10.15.0" minTargetSdk="9.0" />
...
</iosPods>
Assets > External Dependency Manager > iOS Resolver > Install Cocoapods를 클릭해 주십시오.
NBase
3.0.59
게임팟 기본 모듈
X
NBaseAdapterProviderGoogle
3.0.56
구글 로그인
X
NBaseAdapterProviderFacebook
3.0.57
페이스북 로그인
FBSDKLoginKit (17.4.0)
NBaseAdapterProviderNaver
3.0.57
네이버 로그인
X
NBaseAdapterProviderLine
3.0.57
라인 로그인
X
NBaseAdapterProviderKakao
3.0.56
카카오 로그인
X
NBaseAdapterProviderX
3.0.57
X 로그인
X
Xcode에서 프로젝트 설정으로 이동한 후, Package Dependencies 설정으로 진입해 주십시오.
우측 상단 url 입력 란에 ' https://github.com/apollographql/apollo-ios.git ' 추가 후 검색하여, apollo-ios 선택 후 Add Package 로 추가해 주십시오.
노출되는 모달 내 Apollo, ApolloAPI 모듈을 프로젝트의 메인 타겟(Unity-iPhone)에 추가해 주십시오.
NBase
Apollo
https://github.com/apollographql/apollo-ios.git
1.15.2
Apollo, ApolloAPI
사전 준비
프로젝트ID 와 프로젝트 키는 대시보드 → 프로젝트 설정에서 복사 하실 수 있습니다.
로그인, 스토어, 연동에 대한 환경설정은 모두 대시보드 → 프로젝트 설정 에서 추가/수정 하실 수 있습니다.
로그인 별로 [로그인 인증 환경 설정] 을 참고하여, 콘솔에 설정하고 대시보드에 추가해야만 합니다.
인앱 결제 시에 [스토어 환경 설정] 을 참고하여, 콘솔에 설정하고 대시보드에 추가해야만 합니다.
인앱 결제를 위한 스토어마다 아이템을 등록해 주세요. 대시보드 → 결제 → 인앱에서 추가해 주세요.
초기화
초기화를 수행하려면 게임을 시작할 때 로드되는 첫 장면에 사용되는 개체에 아래 코드를 추가해 주세요.
using UnityEngine;
using NBaseSDK;
public class GamePotExample : MonoBehaviour
{
void Start()
{
NBaseSDK.NBase.initialize(projectId, projectKey, [storeId], [language], [region], (init, error) => {
if (error != null)
{
Debug.Log(error.Message);
return;
}
Debug.Log(init.ToString());
});
}
}
Parameter
projectId
대시보드 → 프로젝트 설정
O
projectKey
대시보드 → 프로젝트 설정
O
storeId
아래 표 참고
O
language
언어 (en,ko,jp...)
O
region
리전명 (kr, jp, sg, us, eu)
O
Store.google.ToString()
구글 스토어
Store.one.ToString()
원스토어
Store.galaxy.ToString()
갤럭시 스토어
Store.amazon.ToString()
아마존 스토어
Store.huawei.ToString()
화웨이 스토어
Store.pc.ToString()
PC 스토어
Store.steam.ToString()
스팀 스토어
Callback
Status
bool
상태
Language
string
언어
Country
string
국가
RemoteIp
string
IP
Sandbox
bool
샌드박스 여부
초기화 (이벤트 수신)
먼저 NBase 이벤트를 수신하는 스크립트를 만들어야 합니다. 이 스크립트를 NBaseListener라고 하고 씬의 어떤 객체에도 배치할 수 있으며, 이 객체가 영구적으로 존재하도록 하기 위해 DontDestroyOnLoad 메소드를 호출하는 것이 좋습니다.

using UnityEngine;
using NBaseSDK;
public class NBaseListener: MonoBehaviour, NBaseEventListener
{
void Start()
{
DontDestroyOnLoad(this.gameObject);
NBaseSDK.NBase.SetEventListener(this);
}
}
로그인 기능
로그인 기능 사용하기
개발사에서 구현한 로그인 UI에 따라 로그인 버튼을 클릭했을 때 동작하는 SDK 로그인 기능을 사용하려면 아래 코드를 사용해 주십시오. 그 이전에 로그인에 필요한 콘솔 및 대시보드 설정을 모두 완료해야만 정상적으로 작동됩니다.
NBaseSDK.NBase.signIn(Provider.google.ToString(), (user, error) => {
if (error != null)
{
if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_WITHDRAW) // Withdrawal status
{
// Withdrawal
Debug.Log(error.Message.ToString()); // Withdrawal message
}
else if (error.Code == NBaseSDK.NBase.ErrorCode.SERVICE_MAINTENANCE) // Maintenance
{
Debug.Log(error.Message.ToString()); // 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
// NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
// // Popup handling
// });
}
else if (error.Code == NBaseSDK.NBase.ErrorCode.UPDATE_REQUIRED) // Update
{
Debug.Log(error.Message.ToString()); // 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
// NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
// // Popup handling
// });
}
else if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_BANNED) // Access blocked
{
Debug.Log(error.Message.ToString()); // Block message
}
else
{
// signIn Failed
Debug.Log(error.Message.ToString());
}
}
else
{
// signIn Success
Debug.Log(user.ToString());
}
return;
});
업데이트 / 점검 시 SDK 에서 제공하는 자체 팝업을 사용하는 경우 아래 코드를 추가해 주십시오.
NBaseSDK.NBase.showAppStatusPopup(appStatus, (status, error) =>
{
bool shouldClose = false;
bool shouldNext = false;
var closeValue = status.Close;
var nextValue = status.Next;
if (closeValue != null)
{
if (bool.TryParse(closeValue.ToString(), out bool result))
{
shouldClose = result;
}
}
if (shouldClose)
{
// App Close
}
if (nextValue != null)
{
if (bool.TryParse(nextValue.ToString(), out bool result))
{
shouldNext = result;
}
}
if (shouldNext)
{
// Next, Optional update
}
});
Parameter
Provider.google.ToString()
구글
Provider.anonymous.ToString()
게스트
Provider.facebook.ToString()
페이스북
Provider.apple.ToString()
애플
Provider.kakao.ToString()
카카오
Provider.googleplay.ToString()
플레이게임
Provider.steam.ToString()
스팀
Provider.x.ToString()
X
Provider.line.ToString()
라인
Provider.naver.ToString()
네이버
Provider.github.ToString()
깃헙
Provider.microsoft.ToString()
마이크로소프트
Provider.huawei.ToString()
화웨이
User
Id
string
유저의 고유 ID
SocialId
string
소셜 ID
Name
string
이름 (제공해 주는 경우)
string
이메일 (제공해 주는 경우)
Token
string
토큰
Age
int
나이 (제공해 주는 경우)
Profile
string
프로필 (제공해 주는 경우)
CustomField
string
커스텀 필드
IsSignUp
bool
가입 여부
AppStatus
AppStatus
점검/업데이트 상태
AppStatus
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를 호출하려면 아래 코드를 사용해 주십시오.
NBaseSDK.NBase.openSignInUI((user, error) => {
if (error != null)
{
if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_WITHDRAW) // Withdrawal status
{
// Withdrawal
Debug.Log(error.Message.ToString()); // Withdrawal message
}
else if (error.Code == NBaseSDK.NBase.ErrorCode.SERVICE_MAINTENANCE) // Maintenance
{
Debug.Log(error.Message.ToString()); // 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
// NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
// // Popup handling
// });
}
else if (error.Code == NBaseSDK.NBase.ErrorCode.UPDATE_REQUIRED) // Update
{
Debug.Log(error.Message.ToString()); // 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
// NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
// // Popup handling
// });
}
else if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_BANNED) // Access blocked
{
Debug.Log(error.Message.ToString()); // Block message
}
else
{
// signIn Failed
Debug.Log(error.Message.ToString());
}
}
else
{
// signIn Success
Debug.Log(user.ToString());
}
return;
});
자동 로그인 (옵션)
초기화한 후에 마지막으로 로그인한 인증 수단으로 자동 로그인을 시도합니다. 자동 로그인 시도 전에 마지막 로그인 Provider 타입 확인을 권장합니다.
// 마지막 로그인 Provider 타입 확인
string lastProviderType = NBaseSDK.NBase.getLastProviderType();
if (lastProviderType != Provider.none.ToString())
{
// 마지막 로그인 정보가 있는 경우에만 자동 로그인 시도
NBaseSDK.NBase.signInLastLoggedIn((user, error) => {
if (error != null)
{
if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_WITHDRAW) // Withdrawal status
{
// Withdrawal
Debug.Log(error.Message.ToString()); // Withdrawal message
}
else if (error.Code == NBaseSDK.NBase.ErrorCode.SERVICE_MAINTENANCE) // Maintenance
{
// Maintenance
Debug.Log(error.Message.ToString()); // 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
NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
// Popup handling
});
*/
}
else if (error.Code == NBaseSDK.NBase.ErrorCode.UPDATE_REQUIRED) // Update
{
// Update
Debug.Log(error.Message.ToString()); // 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
NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
// Popup handling
});
*/
}
else if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_BANNED) // Access blocked
{
// Access blocked
Debug.Log(error.Message.ToString()); // Block message
}
else
{
// signIn Failed
Debug.Log(error.Message.ToString());
}
}
else
{
// signIn Success
Debug.Log(user.ToString());
}
});
}
else
{
// 마지막 로그인 정보가 없음
Debug.Log("No last login provider found");
}
getLastProviderType() 메서드는 마지막으로 로그인한 Provider 타입을 반환합니다.
signInLastLoggedIn() 메서드는 마지막으로 로그인한 인증 수단으로 자동 로그인을 시도합니다.
Callback
user
User
로그인 성공 시 사용자 정보
error
Error
로그인 실패 시 에러 정보
로그아웃
SDK 로그아웃 기능을 사용하려면 아래 코드를 사용해 주십시오.
NBaseSDK.NBase.signOut((status, error) => {
if (error != null)
{
// signOut Failed
Debug.Log("signOut Failed: " + error.Message.ToString());
}
else
{
// signOut Success
Debug.Log("signOut Success: " + status.ToString());
// 로그아웃 성공 후 처리 로직
}
});
Callback
status
Boolean
성공 여부
회원탈퇴
SDK 회원탈퇴 기능을 사용하려면 아래 코드를 사용해 주십시오.
NBaseSDK.NBase.deleteMember(providerId, (status, error) => {
if (error != null)
{
// deleteMember Failed
Debug.Log("deleteMember Failed: " + error.Message.ToString());
}
else
{
// deleteMember Success
Debug.Log("deleteMember Success: " + status.ToString());
// 회원 탈퇴 성공 후 처리 로직
}
});
Parameter
providerId
String
로그인한 Provider 타입 (예: Provider.google.ToString(), Provider.anonymous.ToString() 등)
O
Callback
status
Boolean
성공 여부
자체 아이디 비밀번호 인증하기 (옵션)
사용자가 이메일 주소와 비밀번호를 사용하여 로그인할 수 있게 하는 인증 메서드입니다. 사용자의 이메일 주소와 비밀번호를 기반으로 사용자 인증을 수행하며, 이 기능은 전통적인 이메일/비밀번호 기반의 인증 시스템에서 중요한 역할을 합니다.
NBaseSDK.NBase.signInWithPassword(username, password, (user, error) => {
if (error != null)
{
Debug.Log(error.Message.ToString());
return;
}
});
자격 증명으로 로그인하기 (옵션)
외부에서 획득한 소셜 계정의 자격 증명(Access Token)을 사용하여 로그인하려면 아래 코드를 사용해 주십시오.
NBaseSDK.NBase.signInWithCredential(Provider.google.ToString(), providerToken, (user, error) => {
if (error != null)
{
if (error.Code == NBaseSDK.NBase.ErrorCode.SERVICE_MAINTENANCE) // Maintenance
{
// Maintenance
Debug.Log("Maintenance: " + error.Message.ToString());
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
// Popup handling
});
*/
}
else if (error.Code == NBaseSDK.NBase.ErrorCode.UPDATE_REQUIRED) // Update
{
// Update
Debug.Log("Update: " + error.Message.ToString());
/* case 1: Use in-game popup implemented directly by the developer
case 2: Call the code below to use the SDK's own popup
NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
// Popup handling
});
*/
}
else
{
// signInWithCredential Failed
Debug.Log("signInWithCredential Failed: " + error.Message.ToString());
}
}
else
{
// signInWithCredential Success
Debug.Log("signInWithCredential Success: " + user.ToString());
}
});
Parameter
provider
String
Provider ID (예: Provider.google.ToString(), Provider.facebook.ToString() 등)
O
providerToken
String
소셜 계정의 Access Token
O
Callback
user
User
로그인 성공 시 사용자 정보
error
Error
로그인 실패 시 에러 정보
외부 계정 연동 기능
외부 계정 연동 기능 사용하기
현재 게임팟 사용자 계정에 다른 소셜 계정을 연동하려면 아래 코드를 사용해 주십시오.
NBaseSDK.NBase.createLinking(Provider.google.ToString(), (linkingId, error) => {
if (error != null)
{
// createLinking Failed
Debug.Log("createLinking Failed: " + error.Message.ToString());
}
else
{
// createLinking Success
Debug.Log("createLinking Success: " + linkingId);
// 계정 연동 성공 후 처리 로직
}
});
Parameter
providerId
String
연동할 Provider 타입 (예: Provider.google.ToString(), Provider.facebook.ToString() 등)
O
Callback
linkingId
String
연동 성공 시 반환되는 연동 ID
연동 리스트 확인
현재 게임팟 사용자 계정에 연동된 소셜 계정 목록을 확인하려면 아래 코드를 사용해 주십시오.
NBaseSDK.NBase.getLinkedLists((linkings, error) => {
if (error != null)
{
// getLinkedLists Failed
Debug.Log("getLinkedLists Failed: " + error.Message.ToString());
}
else
{
// getLinkedLists Success
Debug.Log("getLinkedLists Success: " + linkings.ToString());
// 연동 목록 확인 후 처리 로직
}
});
Callback
linkings
List
연동된 계정 목록
Linking
id
String
연동 ID (계정 연동 해제 시 사용)
username
String
소셜 ID
provider
String
소셜 provider 타입
연동 해제
현재 게임팟 사용자 계정에서 특정 소셜 계정 연동을 해제하려면 아래 코드를 사용해 주십시오.
NBaseSDK.NBase.deleteLinking(linkingId, (status, error) => {
if (error != null)
{
// deleteLinking Failed
Debug.Log("deleteLinking Failed: " + error.Message.ToString());
}
else
{
// deleteLinking Success
Debug.Log("deleteLinking Success: " + status.ToString());
// 연동 해제 성공 후 처리 로직
}
});
Parameter
linkingId
String
해제할 연동 ID (createLinking 또는 getLinkedLists에서 획득)
O
Callback
status
Boolean
성공 여부
앱 상태 확인
현재 클라이언트의 점검 / 업데이트 상태를 확인하려면 아래 코드를 사용해 주십시오.
NBaseSDK.NBase.checkAppStatus((status, error) =>
{
switch(status.State)
{
case NBaseSDK.NBase.AppStatus.Status.SUCCESS:
// SUCCESS
break;
case NBaseSDK.NBase.AppStatus.Status.FAILED:
// FAILED
break;
case NBaseSDK.NBase.AppStatus.Status.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
NBaseSDK.NBase.showAppStatusPopup(status, (status, error) => {
// Popup handling
});
*/
break;
case NBaseSDK.NBase.AppStatus.Status.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
NBaseSDK.NBase.showAppStatusPopup(status, (status, error) => {
// Popup handling
});
*/
break;
}
});
Unity Standalone 안내
Standalone 은 Mac, Windows 및 Linux용 빌드를 나타냅니다. 게임팟 SDK 는 크로스 플랫폼을 지원하지만 모바일과 Standalone 에서 지원되는 기능이 다르기 때문에 아래 표를 참고하시어 개발 계획을 하시기 바랍니다.
로그인
O
O
O
PC 로그인 후 Token 검증
결제
O
O
O
PC 결제로 이동
공지사항
O
O
O
O
고객지원
O
O
O
O
리더보드
O
O
O
O
친구관리
O
O
O
O
푸시
O
O
X
X
점검
O
O
O
O
업데이트
O
O
O
O
쿠폰
O
O
O
O
채팅
O
O
O
O
데이터저장소
O
O
O
준비중
보안
O
O
X
준비중
플레이어
O
O
O
준비중
Newtonsoft.Json 충돌
NBase Unity SDK는 API 요청 파싱을 위해 Unity의 Newtonsoft Json 패키지를 사용합니다. Json은 가장 일반적으로 사용되는 라이브러리 중 하나이므로 프로젝트에 이미 Json이 있고 다음과 같은 라이브러리 중복 오류가 발생할 가능성이 있습니다.
이 경우 Plugins/Standalone
경로에 있는 Newtonsoft.Json
파일을 삭제하거나 프로젝트에 이미 있는 Json 라이브러리를 삭제하고 Unity의 Json을 사용하면 됩니다. Unity의 Json 패키지는 Unity 엔진과 함께 작동하도록 수정되었으며, IL2CPP를 완벽하게 지원하는 버전입니다.
문제해결
Q. UnityPlayerActivity.java uses or overrides a deprecated API.
A. Edit -> Project Settings->Player->Publishing settings -> Custom Properties Gradle Template 에 체크해 주세요.
Q. error:1E08010C:DECODER routines::unsupported
A. 구글 Authentication Key 키 값이 일치하지 않을 경우 생기는 현상으로 [구글 플레이 스토어](/beta/docs/구글-플레이-스토어) 가이드를 참고하여 키를 정확하게 입력해 주세요.
Q. 원스토어나 게임팟 베타와 같은 공식 maven 주소이외에 maven, jitpack.io 에 다운로드가 되지 않습니다. 유니티에서 아래와 같은 오류가 발생됩니다.
Could not determine the dependencies of task ':unityLibrary:compileReleaseAidl'.
> Could not resolve all task dependencies for configuration ':unityLibrary:releaseCompileClasspath'.
> Could not find io.nbase:nbasesdk:0.0.71-beta.
Required by:
project :unityLibrary
public maven 을 사용하지 않는 모듈의 경우 아래와 같이 maven 주소를 적어 주셔야 합니다.
NBaseSDKDependencies 파일 구성시에 maven 주소를 적어 주시면 됩니다.
# 원스토어
<androidPackage spec="com.onestorecorp.sdk:sdk-iap:21.01.00"/>
<repositories>
<repository>https://repo.onestore.co.kr/repository/onestore-sdk-public</repository>
</repositories>
</androidPackage>
# NBase Beta maven 리포지토리
<androidPackage spec="io.nbase:nbasesdk:3.0.39-beta.1"/>
<repositories>
<repository>https://repo.nbase.io/repository/nbase-releases/</repository>
</repositories>
</androidPackage>
와 같이 jitpack.io 도 주소를 추가해 주시면 됩니다.
Q. minimum API Level 상향 안내
A. 기본 API Level 22 에서 24 로 샹향해 주세요.

Q. Authorization failed: Error Domain=AKAuthenticationError Code=-7026 A. TARGETS > +Capability 를 클릭하여 Sign in with Apple 을 추가합니다.

Q. Couldn't get credential from result.10: Developer console is not set up correctly A. 이 오류는 Google Cloud Console > 사용자 인증 정보 > OAuth 2.0 클라이언트 ID에서 웹 애플리케이션 유형의 클라이언트 ID가 설정되어 있지 않아 발생할 수 있습니다. 그리고 설정된 패키지 이름과 유니티 프로젝트에 설정된 패키지 이름이 일치하지 않아도 발생될 수 있습니다. Q. 16: Cannot find a matching credential. A. 이 경우는 Google Cloud Console > 사용자 인증 정보 > OAuth 2.0 클라이언트 ID가 등록 되지 않은 경우에 발생할 수 있는 오류 입니다. Q. java.lang.NoClassDefFoundError: Failed resolution of: Lcom/android/billingclient/api/BillingClient; A. 아래 코드를 추가해 주시기 바랍니다.
<androidPackage spec="com.android.billingclient:billing:6.1.0" />
Q. (iOS) 앱 실행 시 크래시가 발생되며 "/AdapterProviderFacebook' (no such file)" 에러가 확인됨 A. Xcode TARGETS → General → Frameworks, Libraries, and Embedded Content → AdapterProviderFacebook.xcframework 추가
Q. 실행 후 '/usr/lib/swift/NBase.framework/NBase' (no such file, not in dyld cache), 오류 발생시에 아래와 같이 NBase.xcframework 를 추가해 주세요.


Q. (iOS) iOS 18 환경에서 "NSBundle file:///System/Library/Frameworks/Metal.framework/ principal class is nil because all fallbacks have failed" 에러 발생
A. Edit Scheme 윈도우를 열어 (단축키: CMD + SHIFT + , ) 아래와 같이 Metal 항목의 'API Validation' 을 체크 해제 합니다.

Last updated