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. CocoaPodsを利用して NBase SDKをインストールします。
      pod install
      
    参考

    iOS SDKを正常にインストールするには、cocoapodsがインストールされている必要があります。

    Podfileの設定

    エディタで Podfileを開き、GAMEPOT SDKに必要なフレームワークを追加します。

    platform :ios, '15.0'
    
    # プロジェクトのメインターゲット
    target 'プロジェクトのメインターゲット' do
    ...
      pod 'NBase'
    ...
    end
    
    • Googleログインと Facebookログインを使用する場合
    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.56GAMEPOT基本モジュールApollo
    NBaseAdapterProviderGoogle3.0.56Googleログイン
    NBaseAdapterProviderFacebook3.0.56FacebookログインFBSDKLoginKit (17.4.0)
    NBaseAdapterProviderNaver3.0.56NAVERログイン
    NBaseAdapterProviderLine3.0.56LINEログイン
    NBaseAdapterProviderKakao3.0.56KakaoログインKakaoOpenSDK
    NBaseAdapterProviderX3.0.56Xログイン

    メール、Apple、ゲストログインの場合は基本モジュールに適用されています。

    注意

    一部の依存関係にあるフレームワークは 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.2
      NBaseAdapterProviderKakaoKakaoOpenSDKhttps://github.com/kakao/kakao-ios-sdk2.23.0

    事前準備

    1. プロジェクト IDとプロジェクトキーはダッシュボード > プロジェクトの設定でコピーします。
    2. ログイン、ストア、連携の環境設定はダッシュボード > プロジェクトの設定で行えます。
    3. ログイン別にログイン手段別環境設定を参照し、コンソールに設定してダッシュボードに追加します。
    4. In-App決済時はストア別環境設定を参照し、コンソールに設定してダッシュボードに追加します。
    5. In-App決済のために、ストアごとにアイテムを登録します。 ダッシュボード > 決済 > In-Appで追加します。

    リセット

    リセットを実行するには、ゲームを始める際にロードされる最初の画面に使用されるインスタンスに、以下のコードを追加します。

    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.googleGoogle
    SignInServiceType.anonymousゲスト
    SignInServiceType.facebookFacebook
    SignInServiceType.appleApple
    SignInServiceType.kakaoKakao
    SignInServiceType.xX
    SignInServiceType.lineLINE
    SignInServiceType.naverNAVER
    SignInServiceType.githubGitHub
    SignInServiceType.microsoftMicrosoft
    SignInServiceType.huaweiHUAWEI
    • 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);
        }
    }];
    

    独自の IDとパスワード認証(オプション)

    ユーザーがメールアドレスとパスワードを使用してログインできるようにする認証メソッドです。ユーザーのメールアドレスとパスワードに基づいてユーザー認証を行います。この機能は、従来のメール/パスワードベースの認証システムで重要な役割を果たします。

    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成功したかどうか

    決済

    決済の前に、ストア別環境設定にそのストアに合わせて設定する必要があります。
    さらに、ダッシュボード > 決済 > In-Appにアイテムが追加されていない場合、「ProductID not found」というエラーが発生します。

    In-App情報の取得

    決済の際は、画面に決済情報と現地の通貨情報を表示する必要があります。以下の関数を使用すると現在の決済通貨や名前などを取得できます。正常に取得できない場合は、コンソール設定をご確認ください。

    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商品の説明

    決済リクエスト

    取得した In-App情報にある Product IDで決済をリクエストできます。

    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(ダッシュボード > 決済 In-Appアイテム)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価格

    トラブルシューティング

    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.