Android SDK

Prev Next

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

Android環境向け GAMEPOT Android SDKの使用方法をご案内します。SDKをインストールして環境を構成することで、ゲームとダッシュボードを連携できます。

システム要件

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

  • 最低動作環境は Android level 24以降です。旧バージョンへのサポートが必要な場合は、お問い合わせチャネルまでご連絡ください。

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

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

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

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

GAMEPOT初期化時に登録した言語で自動表示されます。未対応の言語の場合は英語で表示されます。

SDKのインストール

GAMEPOT Android SDKを導入してプロジェクトを設定する手順は次の通りです。

  1. build.gradleまたはbuild.gradle.ktsファイルに NBase SDKを追加します。
  2. GAMEPOT 3.0 以降では、Gradleの設定で外部ライブラリを簡単に統合できます。

Kotlin Gradleの設定

Kotlin DSLを使用するプロジェクトの場合は、次の設定を追加してください。

  1. プロジェクトルートのbuild.gradle.ktsファイルに次の設定を追加します。
    Kotlin:
dependencyResolutionManagement {
	repositories {
		...
		google()
		maven(url = "https://repo.nbase.io/repository/nbase-releases")
	}
}
  1. アプリモジュール(Module: app)のbuild.gradle.ktsファイルに次の設定を追加します。

Kotlin:

dependencies {
	...
	implementation("io.nbase:nbasesdk:latest.release")
}

Googleログインと Google Play Store決済を併せて使用する場合は、次の例をご参照ください。

Kotlin:

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

Groovy DSLを使用するプロジェクトでは、次の設定を追加してください。

  1. プロジェクトルートのbuild.gradleファイルに次の設定を追加します。
    Groovy:
allprojects {
	repositories {
		...
		google()
		maven { url "https://repo.nbase.io/repository/nbase-releases" }
	}
}
  1. アプリモジュール(Module: app)のbuild.gradleファイルに次の設定を追加します。

Groovy:

dependencies {
	...
	implementation("io.nbase:nbasesdk:latest.release")
}

Googleログインと Google Play Store決済を併せて使用する場合は、次の例をご参照ください。

Groovy:

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

対応可能な AOS依存モジュールは次の通りです。

Name Description Dependency modules
io.nbase:nbasesdk GAMEPOT基本モジュール X
io.nbase:nbase-adapter-provider-google Googleログイン X
io.nbase:nbase-adapter-provider-apple Appleログイン X
io.nbase:nbase-adapter-provider-facebook Facebookログイン com.facebook.android:facebook-login:latest.release
io.nbase:nbase-adapter-provider-kakao Kakaoログイン X
io.nbase:nbase-adapter-provider-line LINEログイン X
io.nbase:nbase-adapter-provider-naver NAVERログイン X
io.nbase:nbase-adapter-provider-huawei Huaweiログイン X
io.nbase:nbase-adapter-provider-playgame Google Play Gamesログイン X
io.nbase:nbase-adapter-provider-x Xログイン X
io.nbase:nbase-adapter-billing-googleplay Google Play Store com.android.billingclient:billing:8.0.0
io.nbase:nbase-adapter-billing-onestore ONE Store X
io.nbase:nbase-adapter-billing-galaxy Galaxy Store X
io.nbase:nbase-adapter-billing-huawei Huawei Store X

ゲストログインは基本モジュールに含まれています。

事前準備

SDKを適用する前に、必須設定項目を次のようにご確認ください。

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

リセット

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

Kotlin:

import android.util.Log
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 ?: "initialize fail")
	} else {
		Log.i("NBase", "initialize success: ${init.toString()}")
	}
}

Java:

import android.util.Log;
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.i("NBase", "initialize success: " + init.toString());
	}
	return null;
});
  • Parameters

次の表は、初期化に必要なパラメータを説明します。

Key Type Description Required
projectId String プロジェクト ID(ダッシュボード → プロジェクトの設定) O
projectKey String プロジェクトキー (ダッシュボード → プロジェクトの設定) O
storeId String ストア ID (下記表を参照) O
language String 言語コード(en、ko、jpなど) O
region String リージョン名(kr、jp、sg、us、eu、preview) O

ストア識別子は、次の表をご参照ください。

Key Description
Store.GOOGLE Google Play Store
Store.ONE ONE Store
Store.GALAXY Galaxy Store
Store.AMAZON Amazon Store
Store.HUAWEI Huawei Store
  • Callback

次の表は、初期化コールバックに渡される情報を説明します。

Key Type Description
status Boolean 状態
language String 言語
country String 国
remote_ip String IP
platform String プラットフォーム
sandbox Boolean サンドボックスかどうか

ログイン機能

ログイン機能を利用し、さまざまな認証方法でユーザーを認証する方法について説明します。

ログイン機能の使用

開発会社が実装したログイン UIから SDKのログイン機能を呼び出すには、次のコードをご参照ください。

Kotlin:

import android.content.Intent
import android.util.Log
import com.nbase.sdk.NBase
import com.nbase.sdk.Provider

NBase.signIn(activity, Provider.GOOGLE.toString()) { user, e -> 
    if (e != null) {
        if (e.errorCode == 414) { // Maintenance
            // Maintenance
            Log.e("NBase", "Maintenance: " + e.message) // 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
            NBase.showAppStatusPopup(activity, user?.appStatus) { status, err ->
                // Popup handling
            }
            */
        } else if (e.errorCode == 413) { // Update
            // Update
            Log.e("NBase", "Update: " + e.message) // 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
            NBase.showAppStatusPopup(activity, user?.appStatus) { status, err ->
                // Popup handling
            }
            */
        } else {
            // signIn Failed
            Log.e("NBase", "signIn Failed: " + e.errorCode + ", " + e.message)
        }
    } else {
        // signIn Success
        Log.e("NBase", "signIn Success: " + user.toString())
    }
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    NBase.onActivityResult(requestCode, resultCode, data)
}

Java:

import android.content.Intent;
import android.util.Log;
import com.nbase.sdk.NBase;
import com.nbase.sdk.Provider;

NBase nBase = NBase.INSTANCE;

nBase.signIn(activity, Provider.GOOGLE.toString(), (user, e) -> {
    if (e != null) {
        if (e.getErrorCode() == 414) { // Maintenance
            // Maintenance
            Log.e("NBase", "Maintenance: " + e.getMessage()) // 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
            NBase.showAppStatusPopup(activity, user?.appStatus, (status, err) -> {
                // Popup handling
            }
            */
        } else if (e.getErrorCode() == 413) { // Update
            // Update
            Log.e("NBase", "Update: " + e.getMessage()) // 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
            NBase.showAppStatusPopup(activity, user?.appStatus, (status, err) -> {
                // Popup handling
            }
            */
        } else {
            // signIn Failed
            Log.e("NBase", "signIn Failed: " + e.getErrorCode() + ", " + e.getMessage());
        }
    } else {
        // signIn Success
        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);
}

アップデートまたはメンテナンス時に SDKが提供する独自のポップアップを使用する場合、以下のコードを追加します。

Kotlin:

NBase.showAppStatusPopup(activity, appStatus){ status, e ->
    if (status.close){
        // App Close
    }
    else if (status.next){
        // Next, Optional update
    }
}

Java:

NBase nBase = NBase.INSTANCE;

nBase.showAppStatusPopup(activity, appStatus){ status, e ->
    if (status.getClose()){
        // App Close
    }
    else if (status.getNext()){
        // Next, Optional update
    }
}
  • Provider

次の表は、ログイン機能で使用するサービスタイプを説明します。

Key Description
Provider.GOOGLE Google
Provider.ANONYMOUS ゲスト
Provider.FACEBOOK Facebook
Provider.APPLE Apple
Provider.KAKAO Kakao
Provider.GOOGLEPLAY Google Play Games
Provider.STEAM Steam
Provider.X X
Provider.LINE LINE
Provider.NAVER NAVER
Provider.GITHUB GitHub
Provider.MICROSOFT Microsoft
Provider.HUAWEI Huawei
  • User

次の表は、Userオブジェクトのフィールドを説明します。

Key Type Description
id string ユーザーの固有 ID
socialId string ソーシャル ID
name string 氏名 (提供してくれる場合)
email string メール (提供してくれる場合)
token string トークン
age int 年齢 (提供してくれる場合)
profile string プロファイル (提供してくれる場合)
customField string カスタムフィールド
isSignUp bool 会員登録しているかどうか
appStatus 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を呼び出すには、以下のコードを使用します。

Kotlin:

NBase.openSignInUI(activity) { user, e -> 
    if (e != null) {
        if (e.errorCode == 414) { // Maintenance
            // Maintenance
            Log.e("NBase", "Maintenance: " + e.message) // 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
            NBase.showAppStatusPopup(activity, user?.appStatus) { status, err ->
                // Popup handling
            }
            */
        } else if (e.errorCode == 413) { // Update
            // Update
            Log.e("NBase", "Update: " + e.message) // 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
            NBase.showAppStatusPopup(activity, user?.appStatus) { status, err ->
                // Popup handling
            }
            */
        } else {
            // signIn Failed
            Log.e("NBase", "signIn Failed: " + e.errorCode + ", " + e.message)
        }
    } else {
        // signIn Success
        Log.e("NBase", "signIn Success: " + user.toString())
    }
}

Java:

NBase nBase = NBase.INSTANCE;

nBase.openSignInUI(activity, (user, e) -> {
    if (e != null) {
        if (e.getErrorCode() == 414) { // Maintenance
            // Maintenance
            Log.e("NBase", "Maintenance: " + e.getMessage()) // 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
            NBase.showAppStatusPopup(activity, user?.appStatus, (status, err) -> {
                // Popup handling
            }
            */
        } else if (e.getErrorCode() == 413) { // Update
            // Update
            Log.e("NBase", "Update: " + e.getMessage()) // 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
            NBase.showAppStatusPopup(activity, user?.appStatus, (status, err) -> {
                // Popup handling
            }
            */
        } else {
            // signIn Failed
            Log.e("NBase", "signIn Failed: " + e.getErrorCode() + ", " + e.getMessage());
        }
    } else {
        // signIn Success
        Log.e("NBase", "signIn Success: " + user.toString());
    }
    return null;
});

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

初期化の後、最後にログインした認証手段で自動ログインを試行することができます。自動ログインを試行する前に、最終ログイン Providerタイプの確認をお勧めします。

Kotlin:

// 最終ログイン Providerタイプを確認
val lastProviderType = NBase.getLastProviderType()

if (lastProviderType != Provider.NONE) {
    // 有効な Providerがある場合にのみ自動ログインを試行
    NBase.signInLastLoggedIn(activity) { user, e ->
        if (e != null) {
            if (e.errorCode == 414) { // Maintenance
                // Maintenance
                Log.e("NBase", "Maintenance: " + e.message) // 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
                NBase.showAppStatusPopup(activity, user?.appStatus) { status, err ->
                    // Popup handling
                }
                */
            } else if (e.errorCode == 413) { // Update
                // Update
                Log.e("NBase", "Update: " + e.message) // 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
                NBase.showAppStatusPopup(activity, user?.appStatus) { status, err ->
                    // Popup handling
                }
                */
            } else {
                // signIn Failed
                Log.e("NBase", "signIn Failed: " + e.errorCode + ", " + e.message)
            }
        } else {
            // signIn Success
            Log.e("NBase", "signIn Success: " + user.toString())
        }
    }
} else {
    // 最終ログイン情報なし
    Log.e("NBase", "No last login provider found")
}

Java:

NBase nBase = NBase.INSTANCE;

// 最終ログイン Providerタイプを確認
Provider lastProviderType = nBase.getLastProviderType();

if (lastProviderType != Provider.NONE) {
    // 有効な Providerがある場合にのみ自動ログインを試行
    nBase.signInLastLoggedIn(activity, (user, e) -> {
        if (e != null) {
            if (e.getErrorCode() == 414) { // Maintenance
                // Maintenance
                Log.e("NBase", "Maintenance: " + e.getMessage()) // 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
                NBase.showAppStatusPopup(activity, user?.appStatus, (status, err) -> {
                    // Popup handling
                }
                */
            } else if (e.getErrorCode() == 413) { // Update
                // Update
                Log.e("NBase", "Update: " + e.getMessage()) // 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
                NBase.showAppStatusPopup(activity, user?.appStatus, (status, err) -> {
                    // Popup handling
                }
                */
            } else {
                // signIn Failed
                Log.e("NBase", "signIn Failed: " + e.getErrorCode() + ", " + e.getMessage());
            }
        } else {
            // signIn Success
            Log.e("NBase", "signIn Success: " + user.toString());
        }
        return null;
    });
} else {
    // 最終ログイン情報なし
    Log.e("NBase", "No last login provider found");
}
  • getLastProviderType()

最終ログインの Providerタイプを返します。

次の表は、getLastProviderType()メソッドの返り値について説明します。

Return Type Description
Provider 最終ログインの Providerタイプ
  • signInLastLoggedIn() Parameter

最後にログインした認証方法で自動ログインを試みます。
次の表は、signInLastLoggedIn()メソッドのパラメータについて説明します。

Key Type Description Required
activity Activity 現在のアクティビティ O
  • Callback

次の表は、自動ログインコールバックに渡される値を説明します。

Key Type Description
user User ログイン成功時のユーザー情報
error Error ログイン失敗時のエラー情報

ログアウト

GAMEPOTユーザーアカウントからログアウトするには、以下のコードを使用してください。

Kotlin:

NBase.signOut(activity) { status, e ->
    if (e != null) {
        Log.e("NBase", "signOut Fail")
        Log.e("NBase", "error.message : " + e.message.toString())
    } else {
        Log.e("NBase", "signOut")
        Log.e("NBase", "status : " + status.toString())
        // ログアウト成功後の処理ロジック
    }
}

Java:

NBase nBase = NBase.INSTANCE;

nBase.signOut(activity, (status, e) -> {
    if (e != null) {
        Log.e("NBase", "signOut Fail");
        Log.e("NBase", "error.message : " + e.getMessage());
    } else {
        Log.e("NBase", "signOut");
        Log.e("NBase", "status : " + status.toString());
        // ログアウト成功後の処理ロジック
    }
    return null;
});
  • Parameter

次の表は、getLastProviderType()メソッドのパラメータについて説明します。

Key Type Description Required
activity Activity 現在のアクティビティ O
  • Callback

次の表は、ログアウトコールバックに渡される値を説明します。

Key Type Description
status Boolean ログアウトは成功したか

退会

SDK退会機能を使用するには、以下のコードを使用します。

Kotlin:

NBase.deleteMember(providerId) { status, e ->
    if (e != null) {
        Log.e("NBase", "deleteMember Fail")
        Log.e("NBase", "error.message : " + e.message.toString())
    } else {
        Log.e("NBase", "deleteMember")
        Log.e("NBase", "status : " + status.toString())
        // 退会成功後の処理ロジック
    }
}

Java:

NBase nBase = NBase.INSTANCE;

nBase.deleteMember(providerId, (status, e) -> {
    if (e != null) {
        Log.e("NBase", "deleteMember Fail");
        Log.e("NBase", "error.message : " + e.getMessage());
    } else {
        Log.e("NBase", "deleteMember");
        Log.e("NBase", "status : " + status.toString());
        // 退会成功後の処理ロジック
    }
    return null;
});
  • Parameters

次の表は、退会時に渡すべきパラメータを説明します。

Key Type Description Required
providerId Provider ログインした Providerタイプ(例: Provider.GOOGLE、Provider.ANONYMOUSなど) O
  • Callback

次の表は、退会コールバックの値を説明します。

Key Type Description
status Boolean 退会は成功したか

独自の 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;
});

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

外部から取得したソーシャルアカウントの認証情報(Access Token)を使用してログインするには、以下のコードを使用します。

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

次の表は、認証情報ログインに必要なパラメータを説明します。

Key Type Description Required
activity Activity 現在のアクティビティ O
providerId Provider 連携する Providerタイプ O
providerToken String ソーシャルアカウントの Access Token O
  • Callback

次の表は、認証情報ログインコールバックの値を説明します。

Key Type Description
user User ログイン成功時のユーザー情報
error Error ログイン失敗時のエラー情報

外部アカウント連携機能

GAMEPOTユーザーアカウントに外部ソーシャルアカウントを連携して管理する機能を説明します。

外部アカウント連携機能の使用

現在の GAMEPOTユーザーアカウントと別のソーシャルアカウントを連携するには、以下のコードを使用します。

Kotlin:

NBase.createLinking(activity, providerId) { linkingId, e ->
    if (e != null) {
        Log.e("NBase", "createLinking Fail")
        Log.e("NBase", "error.message : " + e.message.toString())
    } else {
        Log.e("NBase", "createLinking")
        Log.e("NBase", "linkingId : " + linkingId.toString())
        // アカウント連携成功後の処理ロジック
    }
}

Java:

NBase nBase = NBase.INSTANCE;

nBase.createLinking(activity, providerId, (linkingId, e) -> {
    if (e != null) {
        Log.e("NBase", "createLinking Fail");
        Log.e("NBase", "error.message : " + e.getMessage());
    } else {
        Log.e("NBase", "createLinking");
        Log.e("NBase", "linkingId : " + linkingId);
        // アカウント連携成功後の処理ロジック
    }
    return null;
});
  • Parameter

次の表は、アカウント連携に必要なパラメータを説明します。

Key Type Description Required
activity Activity 現在のアクティビティ O
providerId Provider 連携対象の Providerタイプ (例: Provider.GOOGLE、Provider.FACEBOOKなど) O
  • Callback

次の表は、アカウント連携コールバックの値を説明します。

Key Type Description
linkingId String 連携成功時に返される連携 ID

連携リストの確認

現在の GAMEPOTユーザーアカウントと連携されたソーシャルアカウントリストを確認するには、以下のコードを使用します。

Kotlin:

NBase.getLinkedLists { linkings, e ->
    if (e != null) {
        Log.e("NBase", "getLinkedLists Fail")
        Log.e("NBase", "error.message : " + e.message.toString())
    } else {
        Log.e("NBase", "getLinkedLists")
        Log.e("NBase", "linkings : " + linkings.toString())
        // 連携リスト確認後の処理ロジック
    }
}

Java:

NBase nBase = NBase.INSTANCE;

nBase.getLinkedLists((linkings, e) -> {
    if (e != null) {
        Log.e("NBase", "getLinkedLists Fail");
        Log.e("NBase", "error.message : " + e.getMessage());
    } else {
        Log.e("NBase", "getLinkedLists");
        Log.e("NBase", "linkings : " + linkings.toString());
        // 連携リスト確認後の処理ロジック
    }
    return null;
});
  • Callback

次の表は、アカウント連携リストの確認時に提供される値を説明します。

Key Type Description
linkings List 連携されたアカウントリスト
  • Linking

次の表は、Linkingオブジェクトのフィールドを説明します。

Key Type Description
id String 連携 ID (アカウント連携解除時に使用)
username String ソーシャル ID
provider String ソーシャル providerタイプ

連携解除

現在の GAMEPOTユーザーアカウントから特定のソーシャルアカウント連携を解除するには、以下のコードを使用します。

Kotlin:

NBase.deleteLinking(linkingId) { status, e ->
    if (e != null) {
        Log.e("NBase", "deleteLinking Fail")
        Log.e("NBase", "error.message : " + e.message.toString())
    } else {
        Log.e("NBase", "deleteLinking")
        Log.e("NBase", "status : " + status.toString())
        // 連携解除成功後の処理ロジック
    }
}

Java:

NBase nBase = NBase.INSTANCE;

nBase.deleteLinking(linkingId, (status, e) -> {
    if (e != null) {
        Log.e("NBase", "deleteLinking Fail");
        Log.e("NBase", "error.message : " + e.getMessage());
    } else {
        Log.e("NBase", "deleteLinking");
        Log.e("NBase", "status : " + status.toString());
        // 連携解除成功後の処理ロジック
    }
    return null;
});
  • Parameter

次の表は、アカウント連携解除に必要なパラメータを説明します。

Key Type Description Required
linkingId String 解除対象の連携 ID (createLinkingまたは getLinkedListsから取得) O
  • Callback

次の表は、アカウント連携解除コールバックの値を説明します。

Key Type Description
status Boolean 連携解除は成功したか

アプリ状態の確認

現在のクライアントのメンテナンス/アップデート状態を確認するには、以下のコードをご利用ください。

Kotlin:

NBase.checkAppStatus(activity) { status, error ->
    when (status) {
        is NBaseAppStatus.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(activity, status) { popupStatus, e ->
                // Popup handling
            }
            */
        }
        is NBaseAppStatus.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(activity, status) { popupStatus, e ->
                // Popup handling
            }
            */
        }
        null -> {
            // AppStatus Success or Error
            if (error != null) {
                Log.e("NBase", "checkAppStatus error: $error")
            } else {
                Log.e("NBase", "checkAppStatus success")
            }
        }
    }
}

Java:

NBase nBase = NBase.INSTANCE;

nBase.checkAppStatus(activity, (status, error) -> {
    if (status instanceof NBaseAppStatus.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(activity, status, (popupStatus, e) -> {
            // Popup handling
        });
        */
    } else if (status instanceof NBaseAppStatus.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(activity, status, (popupStatus, e) -> {
            // Popup handling
        });
        */
    } else if (status == null) {
        // AppStatus Success or Error
        if (error != null) {
            Log.e("NBase", "checkAppStatus error: " + error.toString());
        } else {
            Log.e("NBase", "checkAppStatus success");
        }
    }
    return null;
});

トラブルシューティング

よくあるエラーと解決方法をご案内します。

Q. Androidでandroidx.security.crypto.MasterKeysクラスが見つからないというエラーが発生します。
A. MasterKeysクラスが見つからないために発生したエラーです。次の依存関係をbuild.gradleまたはbuild.gradle.ktsファイルに追加してください。

Groovy:

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コンソールに登録されている OAuth 2.0 Androidクライアントのパッケージ名と、アプリの SHA-1値が一致しているかご確認ください。