- 印刷する
- 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をインストールしてプロジェクトを設定する方法は次の通りです。
- 管理者アカウントでダッシュボードにログインします。
- bundle.gradleまたは bundle.gradle.ktsファイルに Nbase SDKを追加します。
- GAMEPOT 3.0からは Gradleの設定で簡単に外部ライブラリと統合できるようになりました。
Kotlin Gradleの設定
- プロジェクトの settings.gradle.ktsファイルに以下の定義を追加します。
dependencyResolutionManagement {
repositories {
...
google()
// nbase repo
maven(url = "https://repo.nbase.io/repository/nbase-releases")
}
}
- プロジェクト(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の設定
- プロジェクト(Module : project)の build.gradleファイルに定義を追加します。
allprojects {
repositories {
...
google()
// nbase repo
maven { url "https://repo.nbase.io/repository/nbase-releases" }
}
}
- プロジェクト(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")
}
ライブラリリスト
Name | Version | Description | Dependeny modules |
---|---|---|---|
io.nbase:nbasesdk | 3.0.83 | GAMEPOT基本モジュール | X |
io.nbase:nbase-adapter-provider-google | 3.0.7 | Googleログイン | com.google.android.gms:play-services-auth:20.7.0 |
io.nbase:nbase-adapter-provider-apple | 3.0.4 | Appleログイン | |
io.nbase:nbase-adapter-provider-facebook | 3.0.4 | Facebookログイン | com.facebook.android:facebook-login:latest.release |
io.nbase:nbase-adapter-provider-naver | 3.0.1 | NAVERログイン | |
io.nbase:nbase-adapter-provider-line | 3.0.1 | LINEログイン | |
io.nbase:nbase-adapter-provider-x | 3.0.1 | Twitterログイン | |
io.nbase:nbase-adapter-billing-googleplay | 3.0.4 | Google Play Store | com.android.billingclient:billing-ktx:6.1.0 |
io.nbase:nbase-adapter-billing-one | 3.0.1 | ONE Store | |
io.nbase:nbase-adapter-billing-galaxy | 3.0.1 | Galaxy Store |
ゲストログインの場合は基本モジュールに適用されています。
事前準備
- プロジェクト IDとプロジェクトキーはダッシュボード > プロジェクトの設定でコピーします。
- ログイン、ストア、連携の環境設定はダッシュボード > プロジェクトの設定で行います。
- ログイン別にログイン手段別環境設定を参照し、コンソールに設定してダッシュボードに追加します。
- In-App決済時はストア別環境設定を参照し、コンソールに設定してダッシュボードに追加します。
- 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
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 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
Key | Description |
---|---|
Provider.GOOGLE | |
Provider.ANONYMOUS | ゲスト |
Provider.FACEBOOK | |
Provider.APPLE | Apple |
Provider.KAKAO | Kakao |
Provider.PLAYGAME | Play Games |
Provider.STEAM | Steam |
Provider.X | X |
Provider.LINE | LINE |
Provider.NAVER | NAVER |
Provider.GITHUB | GitHub |
Provider.MICROSOFT | Microsoft |
Provider.HUAWEI | HUAWEI |
- Callback
Key | Type | Description |
---|---|---|
id | String | ユーザー ID |
socialId | String | ソーシャル ID |
name | String | 名前 |
nickname | String | ハンドルネーム |
String | メールアドレス | |
token | String | トークン |
age | Int | 年齢 |
birth | String | 生年月日 |
sex | String | 性別 |
profile | String | プロファイル URL |
mobile | String | 携帯電話番号 |
customField | String | ユーザー定義フィールド |
自動ログイン(オプション)
リセットの後、最後にログインした認証手段で自動ログインを試みます。
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
Key | Type | Description |
---|---|---|
status | Boolean | 成功したかどうか |
決済
決済の前に、ストア別環境設定にそのストアに合わせて設定する必要があります。
さらに、ダッシュボード > 決済 > 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
Key | Type | Description |
---|---|---|
id | String | ID |
productName | String | 製品名 |
price | Float | 製品の価格 |
productId | String | 製品の固有 ID |
productType | String | 製品タイプ |
productDescription | String | 製品の説明 |
currency | String | 通貨の単位 |
決済リクエスト
取得した 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
Key | Type | Description | Required |
---|---|---|---|
ProductId | String | 商品 ID(ダッシュボード → 決済 → In-Appアイテム) | O |
Metadata | String | Metadata | X |
Options | String | 決済オプション機能 | X |
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 |
---|---|---|
id | String | ID |
orderId | String | 注文 ID |
storeId | String | ストア ID |
productId | String | 商品 ID |
billingKey | String | 決済キー |
signature | String | 署名 |
originalJson | String | オリジナル JSON |
developerPayload | String | 開発者ペイロード |
packageName | String | パッケージ名 |
isAcknowledged | bool | 確認の有無 |
purchaseState | String | 購入状態 |
purchaseTime | String | 購入時間 |
quantity | String | 数 |
recurringState | String | 定期決済状態 |
currency | String | 通貨 |
country | String | 国 |
paymentId | String | 決済 ID |
price | Float | 価格 |
iapVersion | String | In-App決済バージョン |
playerId | String | プレイヤー ID |
serverId | String | サーバ ID |
level | Int | レベル |
userdata | String | ユーザーデータ |
metadata | String | メタデータ |
options | String | オプション |
authCode | String | 認証コード |
トラブルシューティング
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が異なる場合にも発生します。