Classic/VPC 환경에서 이용 가능합니다.
iOS에서 게임을 개발하기 위한 GAMEPOT iOS SDK 사용법에 대해 설명합니다. SDK를 설치하고 환경을 구성함으로써 게임과 대시보드를 연동할 수 있습니다.
요구 사양
iOS용 GAMEPOT SDK를 사용하기 위한 요구 사양은 다음과 같습니다.
- 최소 사양: iOS 15 이상
(하위 버전의 iOS 지원이 필요하면 문의채널로 문의해 주시기 바랍니다. )
SDK 설치 및 환경 구성
iOS SDK를 설치한 후 환경을 구성하여 GAMEPOT 대시보드와 게임을 연동하고 게임 개발에 필요한 기능을 사용할 수 있습니다.
GAMEPOT SDK에서 지원하는 언어는 아래와 같습니다.
- 한국어, 영어, 이탈리아어, 태국어, 베트남어, 일본어, 중국어(간체/번체), 인도네시아어, 독일어, 스페인어, 프랑스어
앱 실행 시 디바이스 언어에 따라 SDK 내 지원 언어로 표기되며 미지원 언어는 영어로 표기됩니다.
SDK 설치
GAMEPOT iOS SDK를 설치하고 프로젝트를 구성하는 방법은 다음과 같습니다.
- 관리자 계정으로 대시보드에 로그인해 주십시오.
- iOS 프로젝트 폴더 내 CocoaPods를 통해 Podfile을 생성해 주십시오.
pod init - podfile 파일에 NBase SDK를 추가해 주십시오. Podfile 정의 내용은 아래 "Podfile 설정" 항목을 참고하여 주십시오.
- NBase SDK를 CocoaPods를 통해 설치해 주십시오.
pod install
iOS SDK의 경우 cocoapods를 설치하셔야만 정상 설치가 가능합니다.
Podfile 설정
편집기로 Podfile을 열어 GAMEPOT SDK에 필요한 프레임워크를 추가합니다.
platform :ios, '15.0'
# 프로젝트 메인 타겟
target '프로젝트 메인 타겟' do
...
pod 'NBase'
...
end
- 구글 로그인과 페이스북 로그인을 사용하는 경우
platform :ios, '15.0'
target 'GAMEPOT_GAME' do
use_frameworks!
# Pods for Nbase SDK
pod 'NBase'
pod 'NBaseAdapterProviderGoogle'
pod 'NBaseAdapterProviderFacebook'
end
| Name | Version | Description | Dependeny modules |
|---|---|---|---|
| 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 |
이메일, 애플, 게스트 로그인의 경우 기본 모듈에 적용되어 있습니다.
일부 종속 프레임워크들은 Swift Package Manager을 통해서만 추가가 가능합니다.
-
Xcode에서 프로젝트 설정으로 이동한 후, Package Dependencies 설정으로 진입해 주십시오.

-
우측 상단 url 입력 란에 ' https://github.com/apollographql/apollo-ios.git ' 추가 후 검색하여, apollo-ios 선택 후 Add Package 로 추가해 주십시오.
-
노출되는 모달 내 Apollo, ApolloAPI 모듈을 프로젝트의 메인 타겟에 추가해 주십시오.

Name Dependeny modules Location Version Framework NBase Apollo https://github.com/apollographql/apollo-ios.git 1.15.2 Apollo, ApolloAPI
사전 준비
- 프로젝트ID 와 프로젝트 키는 대시보드 > 프로젝트 설정에서 복사해 주십시오.
- 로그인, 스토어, 연동에 대한 환경설정은 대시보드 > 프로젝트 설정에서 수행할 수 있습니다.
- 로그인별로 로그인 수단별 환경 설정을 참조하여, 콘솔에 설정하고 대시보드에 추가해 주십시오.
- 인앱 결제 시에 스토어별 환경 설정을 참조하여, 콘솔에 설정하고 대시보드에 추가해 주십시오.
- 인앱 결제를 위한 스토어마다 아이템을 등록해 주십시오. 대시보드 > 결제 > 인앱에서 추가해 주십시오.
초기화
초기화를 수행하려면 게임을 시작할 때 로드되는 첫 장면에 사용되는 개체에 아래 코드를 추가해 주십시오.
Swift:
import NBase
NBase.initialize([projectId], projectKey: [projectKey], storeId: [storeId], language: [language], region: [region]) { result in
switch result {
case .success(let data):
NBase.showToast(message: data?.encodeToJson() ?? "")
case .failure(let error):
NBase.showToast(message: error.errorDescription ?? "")
}
}
Objective-C:
[NBaseBridge.shared initialize:[projectId] projectKey:[projectKey] storeId:[storeId] language:[language] region:[region] :^(NSDictionary * _Nullable result, NSError * _Nullable error) {
if (error) {
NSLog(@"Initialization Error: %@", error.localizedDescription);
} else {
NSLog(@"Initialization succeeded with result: %@", result);
}
}];
- Parameter
| Key | Type | Description | Required |
|---|---|---|---|
| projectId | String | 프로젝트 ID (대시보드 → 프로젝트 설정) | O |
| projectKey | String | 프로젝트 키 (대시보드 → 프로젝트 설정) | O |
| storeId | String | 스토어명 (apple) | O |
| language | String | 언어 (en,ko,jp ...) | O |
| region | String | 리전명 (kr, jp, sg, us, eu, preview) | O |
- Callback
| Key | Type | Description |
|---|---|---|
| status | Bool | 상태 |
| language | String | 언어 |
| country | String | 국가 |
| remote_ip | String | IP |
| platform | String | 플랫폼 |
| sandbox | Bool | 샌드박스 여부 |
로그인 기능
로그인 기능 사용하기
개발사에서 구현한 로그인 UI에 따라 로그인 버튼을 클릭했을 때 동작하는 SDK 로그인 기능을 사용하려면 아래 코드를 사용해 주십시오.
Swift:
NBase.signIn(serviceType: .google) { result in
switch result {
case .success(let data):
// signIn Success
print("signIn Success: \(data)")
break
case .failure(let error):
// signIn failed
print("signIn Failed: \(error)")
case .maintenance(let data):
// 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(status: (data?.appStatus)) { status, e in
// Popup handling
}
*/
print("maintenance: \(data)")
case .update(let data):
// 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(status: (data?.appStatus)) { status, e in
// Popup handling
}
*/
print("update: \(data)")
}
}
Objective-C:
[NBaseBridge.shared signIn:google :^(NSDictionary * _Nullable result, NSError * _Nullable error, NSDictionary * _Nullable errorData) {
if (error) {
// signIn failed
NSLog(@"signIn Failed: %@", error.localizedDescription);
} else if (result) {
NSDictionary *appStatus = result[@"appStatus"];
if (appStatus && appStatus[@"type"]) {
NSString *statusType = appStatus[@"type"];
if ([statusType isEqualToString:@"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
[NBaseBridge.shared showAppStatusPopup:appStatus :^(NSDictionary * _Nullable popupResult, NSError * _Nullable popupError) {
// Popup handling
}];
*/
NSLog(@"maintenance: %@", appStatus);
}
else if ([statusType isEqualToString:@"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
[NBaseBridge.shared showAppStatusPopup:appStatus :^(NSDictionary * _Nullable popupResult, NSError * _Nullable popupError) {
// Popup handling
}];
*/
NSLog(@"update: %@", appStatus);
}
}
else {
// signIn success
NSLog(@"signIn Success: %@", result);
}
}
}];
업데이트 / 점검 시 SDK 에서 제공하는 자체 팝업을 사용하는 경우 아래 코드를 추가해 주십시오.
Swift:
NBase.showAppStatusPopup(status: appStatus){ status, e in
if status.close {
// App Close
}
if status.next{
// Next, Optional update
}
}
Objective-C:
[NBaseBridge.shared showAppStatusPopup:appStatus :^(NSDictionary * _Nullable popupResult, NSError * _Nullable popupError) {
if (popupError) {
// showAppStatusPopup Error
} else if (popupResult) {
BOOL shouldClose = [[popupResult objectForKey:@"close"] boolValue];
BOOL shouldProceedNext = [[popupResult objectForKey:@"next"] boolValue];
if (shouldClose) {
// App Close
} else if (shouldProceedNext) {
// Next, Optional update
}
}
}];
- Parameter
| Key | Description |
|---|---|
| SignInServiceType.google | 구글 |
| SignInServiceType.anonymous | 게스트 |
| SignInServiceType.facebook | 페이스북 |
| SignInServiceType.apple | 애플 |
| SignInServiceType.kakao | 카카오 |
| SignInServiceType.x | X |
| SignInServiceType.line | 라인 |
| SignInServiceType.naver | 네이버 |
| SignInServiceType.github | 깃헙 |
| SignInServiceType.microsoft | 마이크로소프트 |
| SignInServiceType.huawei | 화웨이 |
- 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
| 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를 호출하려면 아래 코드를 사용해 주십시오.
Swift:
NBase.openSignInUI { result in
switch result {
case .success(let data):
// openSignInUI Success
print("openSignInUI Success: \(data)")
break
case .failure(let error):
// openSignInUI failed
print("openSignInUI Failed: \(error)")
case .maintenance(let data):
// 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(status: (data?.appStatus)) { status, e in
// Popup handling
}
*/
print("maintenance: \(data)")
case .update(let data):
// 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(status: (data?.appStatus)) { status, e in
// Popup handling
}
*/
print("update: \(data)")
}
}
Objective-C:
[NBaseBridge.shared openSignInUI:^(NSDictionary * _Nullable result, NSError * _Nullable error, NSDictionary * _Nullable errorData) {
if (error) {
// openSignInUI Error
NSLog(@"openSignInUI Error: %@", error.localizedDescription);
} else if (result) {
NSDictionary *appStatus = result[@"appStatus"];
if (appStatus && appStatus[@"type"]) {
NSString *statusType = appStatus[@"type"];
if ([statusType isEqualToString:@"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
[NBaseBridge.shared showAppStatusPopup:appStatus :^(NSDictionary * _Nullable popupResult, NSError * _Nullable popupError) {
// Popup handling
}];
*/
NSLog(@"maintenance: %@", appStatus);
return;
}
else if ([statusType isEqualToString:@"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
[NBaseBridge.shared showAppStatusPopup:appStatus :^(NSDictionary * _Nullable popupResult, NSError * _Nullable popupError) {
// Popup handling
}];
*/
NSLog(@"update: %@", appStatus);
return;
}
}
else {
// openSignInUI Success
NSLog(@"openSignInUI Success: %@", result);
}
}
}];
자동 로그인 (옵션)
초기화 한 후에 마지막으로 로그인한 인증 수단으로 자동 로그인을 시도합니다. 자동 로그인 시도 전에 마지막 로그인 Provider 타입 확인을 권장합니다.
Swift:
// 마지막 로그인 Provider 타입 확인
let lastProviderType = NBase.getLastProviderType()
if lastProviderType != .none {
// 마지막 로그인 정보가 있는 경우에만 자동 로그인 시도
NBase.signInLastLoggedIn(completionHandler: { result in
switch result {
case .success(let data):
// signInLastLoggedIn Success
print("signInLastLoggedIn Success: \(data)")
case .failure(let error):
// signInLastLoggedIn failed
print("signInLastLoggedIn Failed: \(error)")
case .maintenance(let data):
/* 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(status: (data?.appStatus)) { status, e in
// Popup handling
}
*/
print("maintenance: \(data)")
case .update(let data):
/* 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(status: (data?.appStatus)) { status, e in
// Popup handling
}
*/
print("update: \(data)")
}
})
} else {
print("No last login provider found")
}
Objective-C:
// 마지막 로그인 Provider 타입 확인
SignInServiceType lastProviderType = [NBaseBridge.shared getLastProviderType];
if (lastProviderType != SignInServiceTypeNone) {
// 마지막 로그인 정보가 있는 경우에만 자동 로그인 시도
[NBaseBridge.shared signInLastLoggedIn:^(NSDictionary * _Nullable result, NSError * _Nullable error, NSDictionary * _Nullable errorData) {
if (error) {
// signInLastLoggedIn failed
NSLog(@"signInLastLoggedIn Failed: %@", error.localizedDescription);
} else if (result) {
NSDictionary *appStatus = result[@"appStatus"];
if (appStatus && appStatus[@"type"]) {
NSString *statusType = appStatus[@"type"];
if ([statusType isEqualToString:@"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
[NBaseBridge.shared showAppStatusPopup:appStatus :^(NSDictionary * _Nullable popupResult, NSError * _Nullable popupError) {
// Popup handling
}];
*/
NSLog(@"maintenance: %@", appStatus);
return;
}
else if ([statusType isEqualToString:@"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
[NBaseBridge.shared showAppStatusPopup:appStatus :^(NSDictionary * _Nullable popupResult, NSError * _Nullable popupError) {
// Popup handling
}];
*/
NSLog(@"update: %@", appStatus);
return;
}
}
else {
// signInLastLoggedIn success
NSLog(@"signInLastLoggedIn Success: %@", result);
}
}
}];
} else {
NSLog(@"No last login provider found");
}
getLastProviderType() 메서드는 마지막으로 로그인한 Provider 타입을 반환합니다.
signInLastLoggedIn() 메서드는 마지막으로 로그인한 인증 수단으로 자동 로그인을 시도합니다.
- Callback
| Key | Type | Description |
|---|---|---|
| data | NBUser | 로그인 성공 시 사용자 정보 |
| error | NBaseError | 로그인 실패 시 에러 정보 |
로그아웃
SDK 로그아웃 기능을 사용하려면 아래 코드를 사용해 주십시오.
Swift:
NBase.signOut() { result in
switch result {
case .success(let status):
// signOut Success
print("signOut Success: \(status ?? false)")
case .failure(let error):
// signOut Failed
print("signOut Failed: \(error.errorCode), \(error.errorDescription ?? "")")
}
}
Objective-C:
[NBaseBridge.shared signOut:^(NSNumber *result, NSError *error) {
if (error) {
// signOut Failed
NSLog(@"signOut Failed: %ld, %@", (long)error.code, error.localizedDescription);
} else {
// signOut Success
NSLog(@"signOut Success: %@", result.boolValue ? @"YES" : @"NO");
}
}];
- Callback
| Key | Type | Description |
|---|---|---|
| status | Bool | 성공 여부 |
회원탈퇴
SDK 회원탈퇴 기능을 사용하려면 아래 코드를 사용해 주십시오.
Swift:
NBase.deleteMember() { result in
switch result {
case .success(let status):
// deleteMember Success
print("deleteMember Success: \(status ?? false)")
case .failure(let error):
// deleteMember Failed
print("deleteMember Failed: \(error.errorCode), \(error.errorDescription ?? "")")
}
}
Objective-C:
[NBaseBridge.shared deleteMember:^(NSNumber *result, NSError *error) {
if (error) {
// deleteMember Failed
NSLog(@"deleteMember Failed: %ld, %@", (long)error.code, error.localizedDescription);
} else {
// deleteMember Success
NSLog(@"deleteMember Success: %@", result.boolValue ? @"YES" : @"NO");
}
}];
- Callback
| Key | Type | Description |
|---|---|---|
| status | Bool | 성공 여부 |
자체 아이디 비밀번호 인증하기 (옵션)
사용자가 이메일 주소와 비밀번호를 사용하여 로그인할 수 있게 하는 인증 메서드입니다. 사용자의 이메일 주소와 비밀번호를 기반으로 사용자 인증을 수행합니다. 이 기능은 전통적인 이메일/비밀번호 기반의 인증 시스템에서 중요한 역할을 합니다.
Swift:
NBase.signInWithPassword(username: [username], password: [password], options: [option]) { result in
switch result {
case .success(let user):
NBase.showToast(message: user?.encodeToJson() ?? "")
case .failure(let error):
NBase.showToast(message: error.errorDescription ?? "")
}
}
Objective-C:
[NBaseBridge.shared signInWithPassword:[username] password:[password] options:[options] :^(NSDictionary * _Nullable result, NSError * _Nullable error) {
if (error) {
NSLog(@"signInWithPassword Error: %@", error.localizedDescription);
} else {
NSLog(@"signInWithPassword succeeded with result: %@", result);
}
}];
자격 증명으로 로그인하기 (옵션)
외부에서 획득한 소셜 계정의 자격 증명(Access Token)을 사용하여 로그인하려면 아래 코드를 사용해 주십시오.
Swift:
NBase.signInWithCredential(providerId: providerId, accessToken: accessToken, options: options) { result in
switch result {
case .success(let data):
// signInWithCredential Success
print("signInWithCredential Success: \(data)")
case .failure(let error):
// signInWithCredential Failed
print("signInWithCredential Failed: \(error.errorCode), \(error.errorDescription ?? "")")
case .maintenance(let data):
/* 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(status: (data?.appStatus)) { status, e in
// Popup handling
}
*/
print("maintenance: \(data)")
case .update(let data):
/* 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(status: (data?.appStatus)) { status, e in
// Popup handling
}
*/
print("update: \(data)")
}
}
Objective-C:
[NBaseBridge.shared signInWithCredential:providerId accessToken:accessToken options:options :^(NSDictionary * _Nullable result, NSError * _Nullable error, NSDictionary * _Nullable errorData) {
if (error) {
// signInWithCredential Failed
NSLog(@"signInWithCredential Failed: %ld, %@", (long)error.code, error.localizedDescription);
} else if (result) {
NSDictionary *appStatus = result[@"appStatus"];
if (appStatus && appStatus[@"type"]) {
NSString *statusType = appStatus[@"type"];
if ([statusType isEqualToString:@"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
[NBaseBridge.shared showAppStatusPopup:appStatus :^(NSDictionary * _Nullable popupResult, NSError * _Nullable popupError) {
// Popup handling
}];
*/
NSLog(@"maintenance: %@", appStatus);
return;
}
else if ([statusType isEqualToString:@"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
[NBaseBridge.shared showAppStatusPopup:appStatus :^(NSDictionary * _Nullable popupResult, NSError * _Nullable popupError) {
// Popup handling
}];
*/
NSLog(@"update: %@", appStatus);
return;
}
}
else {
// signInWithCredential success
NSLog(@"signInWithCredential Success: %@", result);
}
}
}];
- Parameter
| Key | Type | Description | Required |
|---|---|---|---|
| providerId | String | Provider ID (예: "google", "facebook" 등) | O |
| accessToken | String | 소셜 계정의 Access Token | O |
| options | String | 추가 옵션 (선택사항) | X |
- Callback
| Key | Type | Description |
|---|---|---|
| data | NBUser | 로그인 성공 시 사용자 정보 |
| error | NBaseError | 로그인 실패 시 에러 정보 |
외부 계정 연동 기능
외부 계정 연동 기능 사용하기
현재 게임팟 사용자 계정에 다른 소셜 계정을 연동하려면 아래 코드를 사용해 주십시오.
Swift:
NBase.createLinking(serviceType: .google) { result in
switch result {
case .success(let linkingId):
// createLinking Success
print("createLinking Success: \(linkingId ?? "")")
// 계정 연동 성공 후 처리 로직
case .failure(let error):
// createLinking Failed
print("createLinking Failed: \(error.errorCode), \(error.errorDescription ?? "")")
}
}
Objective-C:
[NBaseBridge.shared createLinking:google :^(NSDictionary * _Nullable result, NSError * _Nullable error) {
if (error) {
// createLinking Failed
NSLog(@"createLinking Failed: %ld, %@", (long)error.code, error.localizedDescription);
} else {
// createLinking Success
NSLog(@"createLinking Success: %@", result);
// 계정 연동 성공 후 처리 로직
}
}];
- Parameter
| Key | Type | Description | Required |
|---|---|---|---|
| serviceType | SignInServiceType | 연동할 Provider 타입 (예: .google, .facebook 등) | O |
- Callback
| Key | Type | Description |
|---|---|---|
| linkingId | String | 연동 성공 시 반환되는 연동 ID |
연동 리스트 확인
현재 게임팟 사용자 계정에 연동된 소셜 계정 목록을 확인하려면 아래 코드를 사용해 주십시오.
Swift:
NBase.getLinkedLists() { result in
switch result {
case .success(let linkings):
// getLinkedLists Success
print("getLinkedLists Success: \(linkings)")
// 연동 목록 확인 후 처리 로직
case .failure(let error):
// getLinkedLists Failed
print("getLinkedLists Failed: \(error.errorCode), \(error.errorDescription ?? "")")
}
}
Objective-C:
[NBaseBridge.shared getLinkedLists:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
if (error) {
// getLinkedLists Failed
NSLog(@"getLinkedLists Failed: %ld, %@", (long)error.code, error.localizedDescription);
} else {
// getLinkedLists Success
NSLog(@"getLinkedLists Success: %@", result);
// 연동 목록 확인 후 처리 로직
}
}];
- Callback
| Key | Type | Description |
|---|---|---|
| linkings | Array | 연동된 계정 목록 |
- Linking
| Key | Type | Description |
|---|---|---|
| id | String | 연동 ID (계정 연동 해제 시 사용) |
| username | String | 소셜 ID |
| provider | String | 소셜 provider 타입 |
연동 해제
현재 게임팟 사용자 계정에서 특정 소셜 계정 연동을 해제하려면 아래 코드를 사용해 주십시오.
Swift:
NBase.deleteLinking(linkingId: linkingId) { result in
switch result {
case .success(let status):
// deleteLinking Success
print("deleteLinking Success: \(status ?? false)")
// 연동 해제 성공 후 처리 로직
case .failure(let error):
// deleteLinking Failed
print("deleteLinking Failed: \(error.errorCode), \(error.errorDescription ?? "")")
}
}
Objective-C:
[NBaseBridge.shared deleteLinking:linkingId :^(NSNumber * _Nullable result, NSError * _Nullable error) {
if (error) {
// deleteLinking Failed
NSLog(@"deleteLinking Failed: %ld, %@", (long)error.code, error.localizedDescription);
} else {
// deleteLinking Success
NSLog(@"deleteLinking Success: %@", result.boolValue ? @"YES" : @"NO");
// 연동 해제 성공 후 처리 로직
}
}];
- Parameter
| Key | Type | Description | Required |
|---|---|---|---|
| linkingId | String | 해제할 연동 ID (createLinking 또는 getLinkedLists에서 획득) | O |
- Callback
| Key | Type | Description |
|---|---|---|
| status | Bool | 성공 여부 |
앱 상태 확인
현재 클라이언트의 점검 / 업데이트 상태를 확인하려면 아래 코드를 사용해 주십시오.
Swift:
NBase.checkAppStatus() { status in
switch status {
case .success(let data):
if let data = data {
switch data {
case .maintenance(let 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(status: data) { status, e in
// Popup handling
}
*/
case .update(let 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(status: data) { status, e in
// Popup handling
}
*/
}
} else {
// AppStatus Success
print("checkAppStatus success")
}
case .failure(let error):
print("checkAppStatus error: \(error)")
}
}
Objective-C:
[NBaseBridge.shared checkAppStatus:^(NSDictionary * _Nullable result, NSError * _Nullable error, NSDictionary * _Nullable errorData) {
if (error) {
NSLog(@"checkAppStatus error: \(error.localizedDescription)");
} else if (result) {
NSString *type = result[@"type"];
if ([type isEqualToString:@"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
[NBaseBridge.shared showAppStatusPopup:result :^(NSDictionary * _Nullable popupResult, NSError * _Nullable popupError) {
// Popup handling
}];
*/
NSLog(@"maintenance: %@", result);
}
else if ([type isEqualToString:@"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
[NBaseBridge.shared showAppStatusPopup:result :^(NSDictionary * _Nullable popupResult, NSError * _Nullable popupError) {
// Popup handling
}];
*/
NSLog(@"update: %@", result);
}
} else {
// AppStatus Success
NSLog(@"Normal Status - No maintenance or update required");
}
}];
문제 해결
Q. Authorization failed: Error Domain=AKAuthenticationError Code=-7026
A. TARGETS > +Capability를 클릭하여 Sign in with Apple을 추가해 주십시오.
