Android SDK
    • PDF

    Android SDK

    • PDF

    記事の要約

    最新のコンテンツが反映されていません。早急にアップデート内容をご提供できるよう努めております。最新のコンテンツ内容は韓国語ページをご参照ください。

    Classic/VPC環境で利用できます。

    Androidでゲームを開発するための GAMEPOT Android SDKの使用方法について説明します。SDKをインストールして環境を構成することで、ゲームとダッシュボードを連携できます。

    システム要件

    Android用 GAMEPOT SDKを使用するためのシステム要件は、次の通りです。

    • 最低スペック: Android Level 24以降
      (下位バージョンの Androidへの対応が必要な場合は、お問い合わせチャネルにてご確認ください。)

    SDKのインストールと環境の構成

    Android SDKをインストールしてから環境を構成し、GAMEPOTのダッシュボードとゲームを連携してゲーム開発に必要な機能を使用できます。

    GAMEPOT SDKでサポートしている言語は次の通りです。

    • 韓国語、英語、イタリア語、タイ語、ベトナム語、日本語、中国語(簡体字/繁体字)、インドネシア語、ドイツ語、スペイン語、フランス語

    アプリ実行時にデバイスの言語によって SDK内サポート言語で表記され、サポートされていない言語は英語で表記されます。

    SDKのインストール

    GAMEPOT Android SDKをインストールしてプロジェクトを設定する方法は次の通りです。

    1. 管理者アカウントでダッシュボードにログインします。
    2. bundle.gradleまたは bundle.gradle.ktsファイルに Nbase SDKを追加します。
    3. GAMEPOT 3.0からは Gradleの設定で簡単に外部ライブラリと統合できるようになりました。

    Kotlin Gradleの設定

    1. プロジェクトの settings.gradle.ktsファイルに以下の定義を追加します。
    dependencyResolutionManagement {
        repositories {
            ...
            google()
            // nbase repo
            maven(url = "https://repo.nbase.io/repository/nbase-releases")
        }
    }
    
    1. プロジェクト(Module : app)の build.gradle.ktsファイルに SDK依存関係を追加します。
    dependencies {
    ...
        implementation("io.nbase:nbasesdk:latest.release")
    }
    

    例) Googleログインと Google Play Store決済を使用する場合

     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の設定

    1. プロジェクト(Module : project)の build.gradleファイルに定義を追加します。
    allprojects {
        repositories {
            ...
            google()
            // nbase repo
            maven { url "https://repo.nbase.io/repository/nbase-releases" }
        }
    }
    
    1. プロジェクト(Module : app)の build.gradleファイルに SDK依存関係を追加します。
    dependencies {
    ...
        implementation("io.nbase:nbasesdk:latest.release")
    }
    

    例) Googleログインと Google Play Store決済を使用する場合

     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")
    }
    

    ライブラリリスト

    NameVersionDescriptionDependeny modules
    io.nbase:nbasesdk3.0.83GAMEPOT基本モジュールX
    io.nbase:nbase-adapter-provider-google3.0.7Googleログインcom.google.android.gms:play-services-auth:20.7.0
    io.nbase:nbase-adapter-provider-apple3.0.4Appleログイン
    io.nbase:nbase-adapter-provider-facebook3.0.4Facebookログインcom.facebook.android:facebook-login:latest.release
    io.nbase:nbase-adapter-provider-naver3.0.1NAVERログイン
    io.nbase:nbase-adapter-provider-line3.0.1LINEログイン
    io.nbase:nbase-adapter-provider-x3.0.1Twitterログイン
    io.nbase:nbase-adapter-billing-googleplay3.0.4Google Play Storecom.android.billingclient:billing-ktx:6.1.0
    io.nbase:nbase-adapter-billing-one3.0.1ONE Store
    io.nbase:nbase-adapter-billing-galaxy3.0.1Galaxy Store

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

    事前準備

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

    リセット

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

    Kotlin:

    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)
        } else {
            Log.e("NBase", init)
        }
    }
    

    Java:

    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.e("NBase", "initialize success: " + init.toString());
        }
        return null;
    });
    
    • Parameter
    KeyTypeDescriptionRequired
    projectIdStringプロジェクト ID (ダッシュボード → プロジェクトの設定)O
    projectKeyStringプロジェクトキー (ダッシュボード → プロジェクトの設定)O
    storeIdStringストア ID (下記表を参照)O
    languageString言語(en、ko、jp...)O
    regionStringリージョン名(kr、jp、sg、us、eu、preview)O
    KeyDescription
    Store.GOOGLEGoogle Play Store
    Store.ONEONE Store
    Store.GALAXYGalaxy Store
    Store.AMAZONAmazon Store
    Store.HUAWEIHuawei Store
    • Callback
    KeyTypeDescription
    statusBoolean状態
    languageString言語
    countryString
    remote_ipStringIP
    platformStringプラットフォーム
    sandboxBooleanサンドボックスかどうか

    ログイン

    開発会社で実装したログイン UIにより、ログインボタンをクリックしたときに動作する SDKログイン機能を使用するには、以下のコードを使用します。

    Kotlin:

    import com.nbase.sdk.Provider
    
    NBase.signIn(activity, Provider.GOOGLE.toString()) { user, e -> 
        if (e != null) {
            Log.e("NBase", e.message)
        } else {
            Log.e("NBase", user)
        }
    }
    
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        NBase.onActivityResult(requestCode, resultCode, data)
    }
    

    Java:

    import com.nbase.sdk.Provider;
    
    NBase nBase = NBase.INSTANCE;
    nBase.signIn(activity, Provider.GOOGLE.toString(), (user, e) -> {
        if (e != null) {
            Log.e("NBase", "signIn fail: " + e.getMessage());
        } else {
            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);
    }
    
    • Parameter
    KeyDescription
    Provider.GOOGLEGoogle
    Provider.ANONYMOUSゲスト
    Provider.FACEBOOKFacebook
    Provider.APPLEApple
    Provider.KAKAOKakao
    Provider.PLAYGAMEPlay Games
    Provider.STEAMSteam
    Provider.XX
    Provider.LINELINE
    Provider.NAVERNAVER
    Provider.GITHUBGitHub
    Provider.MICROSOFTMicrosoft
    Provider.HUAWEIHUAWEI
    • Callback
    KeyTypeDescription
    idStringユーザー ID
    socialIdStringソーシャル ID
    nameString名前
    nicknameStringハンドルネーム
    emailStringメールアドレス
    tokenStringトークン
    ageInt年齢
    birthString生年月日
    sexString性別
    profileStringプロファイル URL
    mobileString携帯電話番号
    customFieldStringユーザー定義フィールド

    自動ログイン(オプション)

    リセットの後、最後にログインした認証手段で自動ログインを試みます。

    Kotlin:

    NBase.signInLastLoggedIn(activity) { user, e ->
        if (e != null) {
            Log.e("NBase", e.message)
        } else {
            Log.e("NBase", user)
        }
    }
    

    Java:

    NBase nBase = NBase.INSTANCE;
    nBase.signInLastLoggedIn(activity, (user, e) -> {
        if (e != null) {
            Log.e("NBase", "signInLastLoggedIn fail: " + e.getMessage());
        } else {
            Log.e("NBase", "signInLastLoggedIn success: " + user.toString());
        }
        return null;
    });
    

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

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

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

    認証情報でログイン(オプション)

    さまざまな認証方法(メールやパスワード、ソーシャルメディアアカウント、電話番号など)で取得した認証情報(credentials)でユーザーログインを処理するのに使用されます。さまざまな認証方式を簡単に実装できるようにサポートし、GAMEPOTにログインできるようにします。

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

    ログアウト

    SDKログアウト機能を使用するには、以下のコードをお使いください。

    Kotlin:

    NBase.signOut() { status, e ->
        if (e != null) {
            Log.e("NBase", e.message)
        } else {
            Log.e("NBase", status)
        }
    }
    

    Java:

    NBase nBase = NBase.INSTANCE;
    nBase.signOut((status, e) -> {
        if (e != null) {
            Log.e("NBase", "signOut fail: " + e.getMessage());
        } else {
            Log.e("NBase", "signOut success: " + status);
        }
        return null;
    });
    
    • Callback
    KeyTypeDescription
    statusBoolean成功したかどうか

    決済

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

    In-App情報の取得

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

    Kotlin:

    import com.nbase.sdk.Store
    
    NBase.getProductItems() {products, e -> 
        if (e != null) {
            Log.e("NBase", e.message)
        } else {
            // In-Appアイテム情報
            Log.e("NBase", products)
        }
    }
    

    Java:

    NBase nBase = NBase.INSTANCE;
    nBase.getProductItems((products, e) -> {
        if (e != null) {
            Log.e("NBase", "getProductItems fail: " + e.getMessage());
        } else {
            if (products != null) {
                Log.e("NBase", "getProductItems success: " + products.toString());
            }
        }
        return null;
    });
    
    • Callback
    KeyTypeDescription
    idStringID
    productNameString製品名
    priceFloat製品の価格
    productIdString製品の固有 ID
    productTypeString製品タイプ
    productDescriptionString製品の説明
    currencyString通貨の単位

    決済リクエスト

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

    Kotlin:

    import com.nbase.sdk.Store
    
    NBase.purchase(activity, Store.GOOGLE, [productId], [metadata], [options]) { purchase, e -> 
        if (e != null) {
            Log.e("NBase", e.message)
        } else {
            Log.e("NBase", purchase)
        }
    }
    

    Java:

    import com.nbase.sdk.Store;
    
    NBase nBase = NBase.INSTANCE;
    nbase.purchase(activity, Store.GOOGLE, productId, metadata, options, (purchase, e) -> {
        if (e != null) {
            Log.e("NBase", "purchase fail: " + e.getMessage());
        } else {
            if (purchase != null) {
                Log.e("NBase", "purchase success: " + purchase.toString());
            }
        }
        return null;
    });
    
    • Parameter
    KeyTypeDescriptionRequired
    ProductIdString商品 ID(ダッシュボード → 決済 → In-Appアイテム)O
    MetadataStringMetadataX
    OptionsString決済オプション機能X
    KeyDescription
    Store.GOOGLEGoogle Play Store
    Store.ONEONE Store
    Store.GALAXYGalaxy Store
    Store.AMAZONAmazon Store
    Store.HUAWEIHuawei Store
    • Callback
    KeyTypeDescription
    idStringID
    orderIdString注文 ID
    storeIdStringストア ID
    productIdString商品 ID
    billingKeyString決済キー
    signatureString署名
    originalJsonStringオリジナル JSON
    developerPayloadString開発者ペイロード
    packageNameStringパッケージ名
    isAcknowledgedbool確認の有無
    purchaseStateString購入状態
    purchaseTimeString購入時間
    quantityString
    recurringStateString定期決済状態
    currencyString通貨
    countryString
    paymentIdString決済 ID
    priceFloat価格
    iapVersionStringIn-App決済バージョン
    playerIdStringプレイヤー ID
    serverIdStringサーバ ID
    levelIntレベル
    userdataStringユーザーデータ
    metadataStringメタデータ
    optionsStringオプション
    authCodeString認証コード

    トラブルシューティング

    Q. Androidで以下のようなエラーが発生します。

    Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.security.crypto.MasterKeys" on path: DexPathList[[zip file "/data/app/~~KKBtt9efgPjpqDSP6o3P1g==/com.nbase.je_beta-6fz3RrA1gqu27fSFW0ehcQ==/base.apk"],nativeLibraryDirectories=[/data/app/~~KKBtt9efgPjpqDSP6o3P1g==/com.nbase.je_beta-6fz3RrA1gqu27fSFW0ehcQ==/lib/arm64, /system/lib64, /system/system_ext/lib64]]
    

    A. MasterKeysクラスが見つからず発生したエラーです。以下のコードを build.gradleまたは build.gradle.ktファイルに入力してください。

    implementation("androidx.security:security-crypto:1.0.0")
    

    Q. Googleでログインしようとすると、以下のようなエラーが発生します。

    10: Developer console is not set up correctly.
    

    A. Google Cloudコンソールに登録されているウェブアプリケーションの OAuth 2.0 Client ID、Client Secretがいずれも GAMEPOTダッシュボードに正常に記入されているかご確認ください。

    Q. Googleでログインしようとすると、以下のようなエラーが発生します。

    16: Cannot find a matching credential.
    

    A. Google Cloudコンソール上で Androidタイプの OAuth 2.0 Client IDで登録されているパッケージとアプリの SHA-1が異なる場合にも発生します。


    この記事は役に立ちましたか?

    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.