iOS SDK
    • PDF

    iOS SDK

    • PDF

    기사 요약

    Classic/VPC 환경에서 이용 가능합니다.

    iOS에서 게임을 개발하기 위한 GAMEPOT iOS SDK 사용법에 대해 설명합니다. SDK를 설치하고 환경을 구성함으로써 게임과 대시보드를 연동할 수 있습니다.

    요구 사양

    iOS용 GAMEPOT SDK를 사용하기 위한 요구 사양은 다음과 같습니다.

    • 최소 사양: iOS 15 이상
      (하위 버전의 iOS 지원이 필요하면 문의채널로 문의해 주시기 바랍니다. )

    SDK 설치 및 환경 구성

    iOS SDK를 설치한 후 환경을 구성하여 GAMEPOT 대시보드와 게임을 연동하고 게임 개발에 필요한 기능을 사용할 수 있습니다.

    GAMEPOT SDK에서 지원하는 언어는 아래와 같습니다.

    • 한국어, 영어, 이탈리아어, 태국어, 베트남어, 일본어, 중국어(간체/번체), 인도네시아어, 독일어, 스페인어, 프랑스어

    앱 실행 시 디바이스 언어에 따라 SDK 내 지원 언어로 표기되며 미지원 언어는 영어로 표기됩니다.

    SDK 설치

    GAMEPOT iOS SDK를 설치하고 프로젝트를 구성하는 방법은 다음과 같습니다.

    1. 관리자 계정으로 대시보드에 로그인해 주십시오.
    2. iOS 프로젝트 폴더 내 CocoaPods를 통해 Podfile을 생성해 주십시오.
      pod init
      
    3. podfile 파일에 NBase SDK를 추가해 주십시오. Podfile 정의 내용은 아래 "Podfile 설정" 항목을 참고하여 주십시오.
    4. 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
    
    NameVersionTypeDependeny modules
    NBase3.0.56게임팟 기본 모듈Apollo
    NBaseAdapterProviderGoogle3.0.56구글 로그인
    NBaseAdapterProviderFacebook3.0.56페이스북 로그인FBSDKLoginKit (17.4.0)
    NBaseAdapterProviderNaver3.0.56네이버 로그인
    NBaseAdapterProviderLine3.0.56라인 로그인
    NBaseAdapterProviderKakao3.0.56카카오 로그인KakaoOpenSDK
    NBaseAdapterProviderX3.0.56X 로그인

    이메일, 애플, 게스트 로그인의 경우 기본 모듈에 적용되어 있습니다.

    주의

    일부 종속 프레임워크들은 Swift Package Manager을 통해서만 추가가 가능합니다.

    1. Xcode에서 프로젝트 설정으로 이동한 후, Package Dependencies 설정으로 진입해 주십시오.
      gamepot-UnitySDK05.png

    2. [+] 버튼 클릭 후에 Add Package Collection ' https://github.com/apollographql/apollo-ios.git ' 추가 후, apollo-ios 선택 후 Add Package 하여 Apollo, ApolloAPI 모듈을 프로젝트의 메인 타겟에 추가해 주십시오.
      gamepot-UnitySDK06.png

      NameDependeny modulesLocationVersionFramework
      NBaseApollohttps://github.com/apollographql/apollo-ios.git1.15.2Apollo, ApolloAPI
      NBaseAdapterProviderKakaoKakaoOpenSDKhttps://github.com/kakao/kakao-ios-sdk2.23.0KakaoSDK, KakaoSDKAuth, kakaoSDKCommon

    사전 준비

    1. 프로젝트ID 와 프로젝트 키는 대시보드 > 프로젝트 설정에서 복사해 주십시오.
    2. 로그인, 스토어, 연동에 대한 환경설정은 대시보드 > 프로젝트 설정에서 수행할 수 있습니다.
    3. 로그인별로 로그인 수단별 환경 설정을 참조하여, 콘솔에 설정하고 대시보드에 추가해 주십시오.
    4. 인앱 결제 시에 스토어별 환경 설정을 참조하여, 콘솔에 설정하고 대시보드에 추가해 주십시오.
    5. 인앱 결제를 위한 스토어마다 아이템을 등록해 주십시오. 대시보드 > 결제 > 인앱에서 추가해 주십시오.

    초기화

    초기화를 수행하려면 게임을 시작할 때 로드되는 첫 장면에 사용되는 개체에 아래 코드를 추가해 주십시오.

    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
    KeyTypeDescriptionRequired
    projectIdString프로젝트 ID (대시보드 → 프로젝트 설정)O
    projectKeyString프로젝트 키 (대시보드 → 프로젝트 설정)O
    storeIdString스토어명 (apple)O
    languageString언어 (en,ko,jp ...)O
    regionString리전명 (kr, jp, sg, us, eu, preview)O
    • Callback
    KeyTypeDescription
    statusBool상태
    languageString언어
    countryString국가
    remote_ipStringIP
    platformString플랫폼
    sandboxBool샌드박스 여부

    로그인

    개발사에서 구현한 로그인 UI에 따라 로그인 버튼을 클릭했을 때 동작하는 SDK 로그인 기능을 사용하려면 아래 코드를 사용해 주십시오.

    swift:

    NBase.signIn(serviceType: .google) { result in
        switch result {
        case .success(let data):
            NBase.showToast(message: data?.encodeToJson() ?? "")
            break
        case .failure(let error):
            if let nBaseError = error as? NBaseError {
                switch nBaseError {
                case .noMaintenance:  // 점검 중
                    NBase.showToast(message: error.localizedDescription)
                case .noUpdated : // 업데이트
                    NBase.showToast(message: error.localizedDescription)
                default:
                    print("An unknown error occurred: \(error)")
                    NBase.showToast(message: error.localizedDescription)
                }
            } else {
                print("An error occurred: \(error)")
                NBase.showToast(message: error.localizedDescription)
            }
        }
    }
    

    Objective-C:

    [NBaseBridge.shared signIn:serviceType :^(NSDictionary * _Nullable result, NSError * _Nullable error) {
        if (error) {
            NSLog(@"signIn Error: %@", error.localizedDescription);
        } else {
            NSLog(@"signIn succeeded with result: %@", result);
        }
    }];
    
    • Parameter
    KeyDescription
    SignInServiceType.google구글
    SignInServiceType.anonymous게스트
    SignInServiceType.facebook페이스북
    SignInServiceType.apple애플
    SignInServiceType.kakao카카오
    SignInServiceType.xX
    SignInServiceType.line라인
    SignInServiceType.naver네이버
    SignInServiceType.github깃헙
    SignInServiceType.microsoft마이크로소프트
    SignInServiceType.huawei화웨이
    • Callback
    KeyTypeDescription
    idString사용자 ID
    nameString사용자 이름
    nicknameString사용자 닉네임
    emailString이메일
    tokenString토큰
    ageInt나이
    birthString생년월일
    sexString성별
    profileString프로필 URL
    mobileString전화 번호

    자동 로그인 (옵션)

    초기화 한 후에 마지막으로 로그인한 인증 수단으로 자동 로그인을 시도합니다.

    swift:

    NBase.signInLastLoggedIn(completionHandler: { 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 signInLastLoggedIn:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
        if (error) {
            NSLog(@"signInLastLoggedIn Error: %@", error.localizedDescription);
        } else {
            NSLog(@"signInLastLoggedIn succeeded with result: %@", result);
        }
    }];
    

    자체 아이디 비밀번호 인증하기 (옵션)

    사용자가 이메일 주소와 비밀번호를 사용하여 로그인할 수 있게 하는 인증 메서드입니다. 사용자의 이메일 주소와 비밀번호를 기반으로 사용자 인증을 수행합니다. 이 기능은 전통적인 이메일/비밀번호 기반의 인증 시스템에서 중요한 역할을 합니다.

    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);
        }
    }];
    

    로그아웃

    SDK 로그아웃 기능을 사용하려면 아래 코드를 사용해 주십시오.

    swift:

    NBase.signOut() { result in
        switch result {
        case .success(let status):
            NBase.showToast(message: "signOut \((status != nil) ? "true" : "false")")
        case .failure(let error):
            NBase.showToast(message: error.errorDescription ?? "")
        }
    }
    

    Objective-C:

    [NBaseBridge.shared signOut:^(NSNumber *result, NSError *error) {
        if (error) {
            NSLog(@"signOut Error: %@", error.localizedDescription);
        } else {
            NSLog(@"signOut: %@", result.boolValue ? @"YES" : @"NO");
        }
    }];
    
    • Callback
    KeyTypeDescription
    statusBool성공 여부

    결제

    결제 전에 스토어별 환경 설정 에 해당 스토어에 맞도록 설정해야 합니다.
    또한, 대시보드 > 결제 > 인앱에 아이템이 추가 안되어 있을 경우 'ProductID not found' 라는 오류가 발생됩니다.

    인앱 정보 가져오기

    결제하실 때에 화면에 결제 정보와 현지 통화 정보를 표시해야 합니다. 아래 함수를 통해서 현재 결제 통화나 이름 등을 가져올 수 있습니다. 만일 정상적으로 가져오지 못하는 경우 콘솔 세팅을 확인해 주시기 바랍니다.

    swift:

    let products = NBase.getProductItems()
    

    Objective-C:

    [NBaseBridge.shared getProductItems:^(NSString * _Nullable result) {
        NSLog(@"getProductItems result: %@", result);
    }];
    
    • Callback
    KeyTypeDescription
    idString상품 ID
    nameString상품 이름
    currencyString통화
    priceFloat64상품 가격
    localizedPriceString현지화된 가격
    descriptionString상품 설명

    결제 요청

    가져온 인앱 정보에 productId 로 결제를 요청하실 수 있습니다.

    swift:

    NBase.purchase(productId: [productId], metadata: [metadata], options: [options]) { 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 purchase:[productId] metadata:[metadata] options:[options] :^(NSDictionary * _Nullable result, NSError * _Nullable error) {
        if (error) {
            NSLog(@"purchase Error: %@", error.localizedDescription);
        } else {
            NSLog(@"purchase succeeded with result: %@", result);
        }
    }];
    
    • Parameter
    KeyTypeDescriptionRequired
    productIdString상품 ID (대시보드 > 결제 인앱 아이템)O
    metadataString메타데이터X
    optionsString결제 옵션 기능X
    • Callback
    KeyTypeDescription
    orderIdString주문 ID
    receiptString영수증
    signatureString서명
    productIdString상품 ID
    storeIdString스토어 ID
    countryString국가
    quantityInt수량
    paymentIdString결제 ID
    currencyString통화
    serverIdString서버 ID
    playerIdString플레이어 ID
    userdataString사용자 데이터
    metadataString메타데이터
    optionsString결제 옵션
    authCodeString인증 코드
    levelInt레벨
    priceFloat64가격

    소셜 계정 연동

    연동 정보 확인

    현재 사용자ID 에 연동된 소셜 provider 를 확인하려면 아래 함수를 사용해 주십시오.

    swift:

    NBase.getLinkedLists() { result in
        switch result {
        case .success(let data):
            // getLinkedLists success
            let dataString = String(describing: data)
            NBase.showToast(message: dataString)
        case .failure(let error):
            // getLinkedLists failed
            NBase.showToast(message: error.errorDescription ?? "")
        }
    }
    

    Objective-C:

    [NBaseBridge.shared getLinkedLists:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
        if (error) {
            // getLinkedLists failed
            NSLog(@"getLinkedLists Error: %@", error.localizedDescription);
        } else {
            // getLinkedLists success
            NSLog(@"getLinkedLists succeeded with result: %@", result);
        }
    }];
    

    문제 해결

    Q. Authorization failed: Error Domain=AKAuthenticationError Code=-7026
    A. TARGETS > +Capability를 클릭하여 Sign in with Apple을 추가해 주십시오.
    gamepot-UnitySDK14.png


    이 문서가 도움이 되었습니까?

    What's Next
    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.