Gamebase Android SDKを使用するためには、まず初期化を行う必要があります。
Gamebaseが正常に動作するよう、必ずActivity#onActivityResult(int, int, Intent)からGamebase.onActivityResult(int, int, Intent)を呼び出します。
API
+ (void)Gamebase.onActivityResult(int requestCode, int resultCode, Intent data);
ゲームが始まったらDebug Modeを設定し、Gamebaseを初期化して、Launching Status Codeに従ってゲームに進入可否を決定するように、以下のフローのように実装してください。
Gamebaseを初期化するとき、GamebaseConfiguration.Builderの客体でGamebaseの設定を変更することができます。
API | Mandatory(M) / Optional(O) | Description |
---|---|---|
newBuilder(String appId, String appVersion, String storeCode) | M | GamebaseConfiguration.BuilderオブジェクトはnewBuilder()関数で作成できます。 appIdはNHN Cloud Projectで発行したアプリIDを入力します。 appVersionはアップデート、メンテナンスに該当するかどうかはゲームバージョンで判断します。ゲームバージョンを指定してください。 storeCodeはAPKが配布されるストアを意味するコードです。次のガイドで各ストアのコードを確認できます。 Purchase - Initialization |
build() | M | 設定を終えたBuilderをConfigurationの客体に変換します。 Gamebase.initialize()APIで必要です。 |
enablePopup(boolean enable) | O | [UI] システムメンテナンス、利用制限(ban)などゲームユーザーがゲームをプレイすることができない状況の場合、ポップアップなどで理由を表示しなければならないときがあります。 trueに設定すれば、Gamebaseが該当する状況のとき、案内ポップアップを自動で表示します。 デフォルトはfalseです。 false状態では起動結果を通して情報を取得した後に直接UIを設計し、ゲームをプレイすることができない理由を表示してください。 |
enableLaunchingStatusPopup(boolean enable) | O | [UI] 起動結果によりログインできない状態の場合(主にメンテナンス状態)、Gamebaseが自動でポップアップを表示するかどうかを変更することができます。 enablePopup(true)の状態でのみ動作します。 デフォルトはtrueです。 |
enableBanPopup(boolean enable) | O | [UI] ゲームユーザーが利用を制限された状態の場合、Gamebaseが自動でbanされた理由をポップアップで表示するかどうかを変更することができます。 enablePopup(true)の状態でのみ動作します。 デフォルトはtrueです。 |
[注意]
ゲームをリリースするときは、必ずソースコードからsetDebugModeの呼び出しを除去したりパラメーターをfalseに変えてからビルドしてください。
デバッグ設定は、コンソールでも行うことができ、コンソールで設定された値を優先視します。 コンソールの設定方法は、下記のガイドを参照してください。
Activity#onCreate(Bundle)からGamebase#initialize(Activity, GamebaseConfiguration, GamebaseDataCallback)を呼び出してGamebase SDKを初期化します。
API
+ (void)Gamebase.initialize(Activity activity, GamebaseConfiguration configuration, GamebaseDataCallback<LaunchingInfo> callback);
Example
public class MainActivity extends AppCompatActivity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/**
* Show gamebase debug message.
*
* CAUTION!
* Set 'false' when build RELEASE.
*/
Gamebase.setDebugMode(true);
/**
* Gamebase Configuration.
*/
String appId = "T0aStC1d";
String appVersion = "1.0.0";
String storeCode = "GG";
GamebaseConfiguration configuration = GamebaseConfiguration.newBuilder(appId, appVersion, storeCode)
.enablePopup(true)
.build();
/**
* Gamebase Initialize.
*/
Gamebase.initialize(activity, configuration, new GamebaseDataCallback<LaunchingInfo>() {
@Override
public void onCallback(final LaunchingInfo data, GamebaseException exception) {
if (Gamebase.isSuccess(exception)) {
// ゲームログインを許可するかどうかは、ローンチコードに応じて判断してください。
...
} else {
// 初期化に失敗すると、Gamebase SDKを利用することができません。
// エラーを表示して、ゲームを再起動または終了する必要があります。
Log.e(TAG, "Initialize failed- "
+ "errorCode: " + exception.getCode()
+ "errorMessage: " + exception.getMessage());
}
}
});
...
}
...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
/**
* Pass onActivityResult event to the Gamebase.
*/
Gamebase.onActivityResult(requestCode, resultCode, data);
...
}
}
Gamebase#initializeの呼び出し結果で起動状態を確認することができます。
ローンチコードに応じてゲームプレイ可否を判断してください。
Gamebase.initialize(activity, configuration, new GamebaseDataCallback<LaunchingInfo>() {
@Override
public void onCallback(final LaunchingInfo data, GamebaseException exception) {
if (Gamebase.isSuccess(exception)) {
// 起動状態を確認します。
boolean canPlay = true;
String errorLog = "";
switch (launchingInfo.getStatus().getCode()) {
case LaunchingStatus.IN_SERVICE:
break;
case LaunchingStatus.RECOMMEND_UPDATE:
Log.d(TAG, "There is a new version of this application.");
break;
case LaunchingStatus.IN_SERVICE_BY_QA_WHITE_LIST:
case LaunchingStatus.IN_TEST:
case LaunchingStatus.IN_REVIEW:
case LaunchingStatus.IN_BETA:
Log.d(TAG, "You logged in because you are developer.");
break;
case LaunchingStatus.REQUIRE_UPDATE:
canPlay = false;
errorLog = "You have to update this application.";
break;
case LaunchingStatus.BLOCKED_USER:
canPlay = false;
errorLog = "You are blocked user!";
break;
case LaunchingStatus.TERMINATED_SERVICE:
canPlay = false;
errorLog = "Game is closed!";
break;
case LaunchingStatus.INSPECTING_SERVICE:
case LaunchingStatus.INSPECTING_ALL_SERVICES:
canPlay = false;
errorLog = "Under maintenance.";
break;
case LaunchingStatus.INTERNAL_SERVER_ERROR:
default:
canPlay = false;
errorLog = "Unknown internal error.";
break;
}
if (canPlay) {
// ゲームプレイを開始します。
} else {
// ゲーム不可の理由を表示してゲームを中止します。
}
}
...
}
});
getLaunchingInformations APIを利用すると、初期化後にもLaunchingInfoオブジェクトを取得できます。
[注意]
getLaunchingInformations() APIは、リアルタイムでサーバーから情報を取得する非同期APIではありません。 2分毎にアップデートされるキャッシュ情報を返すため、リアルタイムで現在のメンテナンス状況を判断する用途には適していません。 このような場合にはLaunching Status Codeが変更されれ時にイベントが動作するGamebaseEventHandlerを活用してください。 Game > Gamebase > Android SDK使用ガイド > ETC > Additional Features > Gamebase Event Handler > Observer
API
+ (LaunchingInfo)Gamebase.Launching.getLaunchingInformations();
LaunchingInfoオブジェクトにはGamebase Consoleに設定した値、ゲーム状態などが含まれています。
Gamebaseローンチ情報です。
1.1 status
Gamebase Android SDKの初期化設定に入力したアプリバージョンのゲーム状態情報です。
ステータスコードは下記の表を参照してください。
Status | Code | Description |
---|---|---|
IN_SERVICE | 200 | サービスが正常に動作しています。 |
RECOMMEND_UPDATE | 201 | アップデートを推奨します。 |
IN_SERVICE_BY_QA_WHITE_LIST | 202 | メンテナンス中にはサービスを利用することができませんが、QA端末として登録されている場合はメンテナンスに関係なくサービスに接続してテストすることができます。 |
IN_TEST | 203 | テスト中 |
IN_REVIEW | 204 | 審査中 |
IN_BETA | 205 | ベータサーバー環境 |
REQUIRE_UPDATE | 300 | アップデートが必ず必要です。 |
BLOCKED_USER | 301 | 接続遮断に登録された端末(デバイスキー)でサービスに接続した場合です。 |
TERMINATED_SERVICE | 302 | サービスが終了しました。 |
INSPECTING_SERVICE | 303 | サービスメンテナンス中です。 |
INSPECTING_ALL_SERVICES | 304 | 全体サービスメンテナンス中です。 |
INTERNAL_SERVER_ERROR | 500 | 内部サーバーエラーです。 |
1.2 app
Gamebase Consoleに登録されたアプリ情報です。
Game > Gamebase > コンソール使用ガイド > アプリ > Client
1.3 maintenance
Gamebase Consoleに登録されたメンテナンス情報です。
Game > Gamebase > コンソール使用ガイド > 運営 > Maintenance
Not translated yet
enablePopupとenableLaunchingStatusPopupの値がいずれもtrueの場合、ゲームがメンテナンス状態の時、自動的にメンテナンスポップアップが表示されます。
ここで詳細表示ボタンをクリックするとメンテナンス情報が自動的にWebビューで表示されます。
この時に表示されるhtmlファイルを修正したい場合は、次のリンクのhtmlファイルをダウンロードして自由に修正した後、'assets/Gamebase'フォルダに格納します。するとGamebase SDKに内蔵された基本htmlファイルの代わりにそのhtmlファイルを使用してメンテナンス情報を表示します。 htmlファイルダウンロードLINK
1.4 notice
Gamebase Consoleに登録された告知情報です。
Game > Gamebase > コンソール使用ガイド > 運営 > Notice
1.5 user
Gamebase初期化を実行したユーザー情報です。
Gamebaseと連携したNHN CloudサービスのappKeyです。
NHN Cloud Consoleに登録されたIAPストア情報です。
Game > Gamebase > コンソール使用ガイド > 決済
TNHN Cloud Launching Consoleでユーザーが入力した情報です。
Game > Gamebase > コンソール使用ガイド > 管理 > Config
Gamebaseコンソールに登録されていないGameClientVersionを初期化するとLAUNCHING_UNREGISTERED_CLIENT(2004)エラーが発生します。 enablePopup(true), enableLaunchingStatusPopup(true)状態の場合、強制アップデートポップアップが表示され、マーケットに移動します。 Gamebaseポップアップを使用しない場合はUpdateInfoをGamebaseExceptionオブジェクトから取得してユーザーがマーケットに移動できるようにゲームで直接UIを実装できます。
VO
class UpdateInfo {
// 最新バージョンをダウンロードできるストアインストールURL
String installUrl;
// ユーザーに表示されるメッセージで、ユーザーの端末言語に合わせて伝達されます。
// 言語が「en」の場合、メッセージは下記のとおりです。
// 'The version is not supported. Please get the latest update version.'
String message;
}
API
+ (UpdateInfo)UpdateInfo.from(GamebaseException exception);
Example
Gamebase.initialize(activity, configuration, new GamebaseDataCallback<LaunchingInfo>() {
@Override
public void onCallback(final LaunchingInfo data, GamebaseException exception) {
if (Gamebase.isSuccess(exception)) {
// Gamebase initialization succeeded.
} else {
// Gamebase initialization failed.
UpdateInfo updateInfo = UpdateInfo.from(exception);
if (updateInfo != null) {
// Unregistered game client version.
// Open market url to update application.
updateInfo.installUrl; // Market URL.
updateInfo.message; // Message from launching server.
return;
}
// Another initialization error.
...
}
...
}
});
Error | Error Code | Description |
---|---|---|
NOT_INITIALIZED | 1 | Gamebaseが初期化されていません。 |
NOT_LOGGED_IN | 2 | ログインが必要です。 |
INVALID_PARAMETER | 3 | 無効なパラメータです。 |
INVALID_JSON_FORMAT | 4 | JSONフォーマットエラーです。 |
USER_PERMISSION | 5 | 権限がありません。 |
NOT_SUPPORTED | 10 | サポートしていない機能です。 |
NOT_SUPPORTED_ANDROID | 11 | Androidでサポートしていない機能です。 |
ANDROID_ACTIVEAPP_NOT_CALLED | 32 | activeApp APIが呼び出されませんでした。 |