Gamebaseで対応している付加機能について説明します。
API
Supported Platforms ■ UNITY_IOS ■ UNITY_ANDROID ■ UNITY_STANDALONE ■ UNITY_WEBGL ■ UNITY_EDITOR
static string GetDeviceLanguageCode()
[参考]
Editor on Windows, Standalone on Windowsの場合にはCultureInfoを参照して言語コードを返します。
Editor on Mac, WebGLはApplication.systemLanguageの値を参照して言語コードを返します。
例えば、Application.systemLanguage == SystemLanguage.Koreanの場合は'ko'を返します。
メンテナンスポップアップなどでGamebaseが表示する言語は、端末に設定された言語と同じです。
しかしゲームで表示する言語を、端末に設定した言語ではなく、別のオプションで変更できるゲームがあります。 例えば、端末に設定された言語は英語ですが、ゲーム表示言語を日本語に変更した場合、 Gamebaseで表示する言語も日本語に変更したいですが、Gamebaseが表示する言語は端末に設定された言語の英語が表示されます。
このように端末に設定された言語ではなく、他の言語でGamebaseのメッセージを表示したい
アプリケーションのためにGamebaseはDisplay Language
という機能を提供します。
GamebaseはDisplay Languageで設定した言語でGamebaseのメッセージを表示します。 Display Languageに入力する言語コードは、以下の表(Gamebaseでサポートする言語コードの種類)で指定したコードだけを使用できます。
[注意]
- Display Languageは、端末設定言語と関係なくGamebaseの表示言語を変更したい場合にのみ使用してください。
- Display Language CodeはISO-639形式の値で、大文字/小文字を区別します。 'EN'または'zh-cn'と設定すると問題が発生する場合があります。
- もしDisplay Language Codeに入力した値が以下の表(Gamebaseでサポートする言語コードの種類)に存在しない場合、Display Langauge Codeは自動的にデフォルト値の英語(en)が指定されます。
[Note]
- Gamebaseのクライアントメッセージは英語(en)、韓国語(ko)、日本語(ja)のみ含んでいるため、下記の表に存在する言語コードであっても、英語(en)、韓国語(ko)、日本語(ja)以外の言語を指定するとデフォルト値の英語(en)に自動設定されます。
- Gamebaseのクライアントに含まれていない言語セットは直接追加できます。 新規言語セット追加項目を参照してください。
Code | Name |
---|---|
de | German |
en | English |
es | Spanish |
fi | Finnish |
fr | French |
id | Indonesian |
it | Italian |
ja | Japanese |
ko | Korean |
pt | Portuguese |
ru | Russian |
th | Thai |
vi | Vietnamese |
ms | Malay |
zh-CN | Chinese-Simplified |
zh-TW | Chinese-Traditional |
該当する言語コードは、GamebaseDisplayLanguageCode
クラスに定義されています。
namespace Toast.Gamebase
{
public class GamebaseDisplayLanguageCode
{
public const string German = "de";
public const string English = "en";
public const string Spanish = "es";
public const string Finnish = "fi";
public const string French = "fr";
public const string Indonesian = "id";
public const string Italian = "it";
public const string Japanese = "ja";
public const string Korean = "ko";
public const string Portuguese = "pt";
public const string Russian = "ru";
public const string Thai = "th";
public const string Vietnamese = "vi";
public const string Malay = "ms";
public const string Chinese_Simplified = "zh-CN";
public const string Chinese_Traditional = "zh-TW";
}
}
Gamebaseを初期化する際にDisplay Languageを設定することができます。
API
Supported Platforms ■ UNITY_IOS ■ UNITY_ANDROID ■ UNITY_STANDALONE ■ UNITY_WEBGL ■ UNITY_EDITOR
static void Initialize(GamebaseRequest.GamebaseConfiguration configuration, GamebaseCallback.GamebaseDelegate<GamebaseResponse.Launching.LaunchingInfo> callback)
Example
public void InitializeWithConfiguration()
{
var configuration = new GamebaseRequest.GamebaseConfiguration();
...
configuration.displayLanguageCode = displayLanguage;
...
Gamebase.Initialize(configuration, (launchingInfo, error) =>
{
if (Gamebase.IsSuccess(error))
{
Debug.Log("Gamebase initialization succeeded.");
string displayLanguage = Gamebase.GetDisplayLanguageCode();
}
else
{
Debug.Log(string.Format("Gamebase initialization failed. error is {0}", error));
}
});
}
Gamebaseを初期化する際に入力されたDisplay Languageを変更することができます。
API
Supported Platforms ■ UNITY_IOS ■ UNITY_ANDROID ■ UNITY_STANDALONE ■ UNITY_WEBGL ■ UNITY_EDITOR
static void SetDisplayLanguageCode(string languageCode)
Example
public void SetDisplayLanguageCode()
{
Gamebase.SetDisplayLanguageCode(GamebaseDisplayLanguageCode.English);
}
現在適用されているDisplay Languageを照会することができます。
API
Supported Platforms ■ UNITY_IOS ■ UNITY_ANDROID ■ UNITY_STANDALONE ■ UNITY_WEBGL ■ UNITY_EDITOR
static string GetDisplayLanguageCode()
Example
public void GetDisplayLanguageCode()
{
string displayLanguage = Gamebase.GetDisplayLanguageCode();
}
UnityEditor及びUnity Standalone、WebGLプラットフォームサービスを提供する際にGamebaseで提供するデフォルト言語(ko、en、ja)以外に他の言語を使用しなければならない場合、Assets > StreamingAssets > Gamebaseにあるlocalizedstring.jsonファイルに値を追加しなければなりません。
localizedstring.jsonに定義されている形式は、次の通りです。
{
"en": {
"common_ok_button": "OK",
"common_cancel_button": "Cancel",
...
"launching_service_closed_title": "Service Closed"
},
"ko": {
"common_ok_button": "확인",
"common_cancel_button": "취소",
...
"launching_service_closed_title": "서비스 종료"
},
"ja": {
"common_ok_button": "確認",
"common_cancel_button": "キャンセル",
...
"launching_service_closed_title": "サービス終了"
},
}
他の言語の追加が必要な場合、localizedstring.jsonファイルに"${言語コード}":{"key":"value"}
の形で値を追加してください。
{
"en": {
"common_ok_button": "OK",
"common_cancel_button": "Cancel",
...
"launching_service_closed_title": "Service Closed"
},
"ko": {
"common_ok_button": "확인",
"common_cancel_button": "취소",
...
"launching_service_closed_title": "서비스 종료"
},
"ja":{
"common_ok_button":"確認",
"common_cancel_button":"キャンセル",
...
"launching_service_closed_title": "サービス終了"
},
"${言語コード}": {
"common_ok_button": "...",
...
}
}
Unity Android、iOSプラットフォームでの言語セットの新規追加方法は、次のガイドをご参考ください。
初期化及びSetDisplayLanguageCodeAPIを通してDisplay Languageを設定する場合、最終的に適用されるDisplay Languageは、入力した値と違う値が適用されることがあります。
en
が自動で設定されます。API
Supported Platforms ■ UNITY_IOS ■ UNITY_ANDROID
static string GetCountryCodeOfUSIM()
API
Supported Platforms ■ UNITY_IOS ■ UNITY_ANDROID
static string GetCountryCodeOfDevice()
sb
[参考]
Editor on Windows, Standalone on Windowsの場合は、CultureInfoを参照して国コードを返します。
Editor on Mac, WebGLは、Application.systemLanguageの値を参照して国コードを返します。
例えば、Application.systemLanguage == SystemLanguage.Koreanの場合は'KR'を返します。
API
■ UNITY_IOS ■ UNITY_ANDROID ■ UNITY_STANDALONE ■ UNITY_WEBGL ■ UNITY_EDITOR
public static string GetCountryCode()
GamebaseEventHandlerは以下のAPIを利用して簡単にListenerを追加/削除できます。
GamebaseEventHandlerは下記のAPIを利用して簡単にHandlerを追加/削除できます。
API
■ UNITY_IOS ■ UNITY_ANDROID ■ UNITY_STANDALONE ■ UNITY_WEBGL ■ UNITY_EDITOR
public static void Gamebase.AddEventHandler(GamebaseCallback.DataDelegate<GamebaseResponse.Event.GamebaseEventMessage> eventHandler);
public static void Gamebase.RemoveEventHandler(GamebaseCallback.DataDelegate<GamebaseResponse.Event.GamebaseEventMessage> eventHandler);
public static void Gamebase.RemoveAllEventHandler();
VO
public class GamebaseEventMessage
{
// Eventの種類を表します。
// GamebaseEventCategoryクラスの値が割り当てられます。
public string category;
// 各categoryに合ったVOに変換できるJSON Stringデータです。
public string data;
}
Example
public void AddEventHandlerSample()
{
Gamebase.AddEventHandler(GamebaseEventHandler);
}
private void GamebaseEventHandler(GamebaseResponse.Event.GamebaseEventMessage message)
{
switch (message.category)
{
case GamebaseEventCategory.IDP_REVOKED:
{
GamebaseResponse.Event.GamebaseEventIdPRevokedData idPRevokedData = GamebaseResponse.Event.GamebaseEventIdPRevokedData.From(message.data);
if (idPRevokedData != null)
{
ProcessIdPRevoked(idPRevokedData);
}
break;
}
case GamebaseEventCategory.LOGGED_OUT:
{
GamebaseResponse.Event.GamebaseEventLoggedOutData loggedData = GamebaseResponse.Event.GamebaseEventLoggedOutData.From(message.data);
if (loggedData != null)
{
// There was a problem with the access token.
// Call login again.
}
break;
}
case GamebaseEventCategory.SERVER_PUSH_APP_KICKOUT_MESSAGE_RECEIVED:
case GamebaseEventCategory.SERVER_PUSH_APP_KICKOUT:
case GamebaseEventCategory.SERVER_PUSH_TRANSFER_KICKOUT:
{
GamebaseResponse.Event.GamebaseEventServerPushData serverPushData = GamebaseResponse.Event.GamebaseEventServerPushData.From(message.data);
if (serverPushData != null)
{
CheckServerPush(message.category, serverPushData);
}
break;
}
case GamebaseEventCategory.OBSERVER_LAUNCHING:
{
GamebaseResponse.Event.GamebaseEventObserverData observerData = GamebaseResponse.Event.GamebaseEventObserverData.From(message.data);
if(observerData != null)
{
CheckLaunchingStatus(observerData);
}
break;
}
case GamebaseEventCategory.OBSERVER_NETWORK:
{
GamebaseResponse.Event.GamebaseEventObserverData observerData = GamebaseResponse.Event.GamebaseEventObserverData.From(message.data);
if (observerData != null)
{
CheckNetwork(observerData);
}
break;
}
case GamebaseEventCategory.OBSERVER_HEARTBEAT:
{
GamebaseResponse.Event.GamebaseEventObserverData observerData = GamebaseResponse.Event.GamebaseEventObserverData.From(message.data);
if (observerData != null)
{
CheckHeartbeat(observerData);
}
break;
}
case GamebaseEventCategory.OBSERVER_WEBVIEW:
{
GamebaseResponse.Event.GamebaseEventObserverData observerData = GamebaseResponse.Event.GamebaseEventObserverData.From(message.data);
if (observerData != null)
{
CheckWebView(observerData);
}
break;
}
case GamebaseEventCategory.OBSERVER_INTROSPECT:
{
// Introspect error
GamebaseResponse.Event.GamebaseEventObserverData observerData = GamebaseResponse.Event.GamebaseEventObserverData.From(message.data);
int errorCode = observerData.code;
string errorMessage = observerData.message;
break;
}
case GamebaseEventCategory.PURCHASE_UPDATED:
{
GamebaseResponse.Event.PurchasableReceipt purchasableReceipt = GamebaseResponse.Event.PurchasableReceipt.From(message.data);
if (purchasableReceipt != null)
{
// If the user got item by 'Promotion Code',
// this event will be occurred.
}
break;
}
case GamebaseEventCategory.PUSH_RECEIVED_MESSAGE:
{
GamebaseResponse.Event.PushMessage pushMessage = GamebaseResponse.Event.PushMessage.From(message.data);
if (pushMessage != null)
{
// When you received push message.
// By converting the extras field of the push message to JSON,
// you can get the custom information added by the user when sending the push.
// (For Android, an 'isForeground' field is included so that you can check if received in the foreground state.)
}
break;
}
case GamebaseEventCategory.PUSH_CLICK_MESSAGE:
{
GamebaseResponse.Event.PushMessage pushMessage = GamebaseResponse.Event.PushMessage.From(message.data);
if (pushMessage != null)
{
// When you clicked push message.
}
break;
}
case GamebaseEventCategory.PUSH_CLICK_ACTION:
{
GamebaseResponse.Event.PushAction pushAction = GamebaseResponse.Event.PushAction.From(message.data);
if (pushAction != null)
{
// When you clicked action button by 'Rich Message'.
}
break;
}
}
}
Event種類 | GamebaseEventCategory | VO変換方法 | 備考 |
---|---|---|---|
IdPRevoked | GamebaseEventCategory.IDP_REVOKED | GamebaseResponse.Event.GamebaseEventIdPRevokedData.from(message.data) | - |
LoggedOut | GamebaseEventCategory.LOGGED_OUT | GamebaseResponse.Event.GamebaseEventLoggedOutData.from(message.data) | - |
ServerPush | GamebaseEventCategory.SERVER_PUSH_APP_KICKOUT_MESSAGE_RECEIVED GamebaseEventCategory.SERVER_PUSH_APP_KICKOUT GamebaseEventCategory.SERVER_PUSH_TRANSFER_KICKOUT |
GamebaseResponse.Event.GamebaseEventServerPushData.from(message.data) | - |
Observer | GamebaseEventCategory.OBSERVER_LAUNCHING GamebaseEventCategory.OBSERVER_NETWORK GamebaseEventCategory.OBSERVER_HEARTBEAT |
GamebaseResponse.Event.GamebaseEventObserverData.from(message.data) | - |
Purchase - プロモーション決済 | GamebaseEventCategory.PURCHASE_UPDATED | GamebaseResponse.Event.PurchasableReceipt.from(message.data) | - |
Push - メッセージ受信 | GamebaseEventCategory.PUSH_RECEIVED_MESSAGE | GamebaseResponse.Event.PushMessage.from(message.data) | |
Push - メッセージクリック | GamebaseEventCategory.PUSH_CLICK_MESSAGE | GamebaseResponse.Event.PushMessage.from(message.data) | |
Push - アクションクリック | GamebaseEventCategory.PUSH_CLICK_ACTION | GamebaseResponse.Event.PushAction.from(message.data) | RichMessageボタンを押すと動作します。 |
[参考]
iOS Appleidログインを使用する場合にのみ発生するイベントです。
Example
public void AddEventHandlerSample()
{
Gamebase.AddEventHandler(GamebaseEventHandler);
}
private void GamebaseEventHandler(GamebaseResponse.Event.GamebaseEventMessage message)
{
switch (message.category)
{
case GamebaseEventCategory.IDP_REVOKED:
{
GamebaseResponse.Event.GamebaseEventIdPRevokedData idPRevokedData = GamebaseResponse.Event.GamebaseEventIdPRevokedData.From(message.data);
if (idPRevokedData != null)
{
ProcessIdPRevoked(idPRevokedData);
}
break;
}
default:
{
break;
}
}
}
private void ProcessIdPRevoked(string category, GamebaseResponse.Event.GamebaseEventIdPRevokedData data)
{
var revokedIdP = data.idPType;
switch (data.code)
{
case GamebaseIdPRevokedCode.WITHDRAW:
{
// 現在使用停止しているIdPでログインしていて、マッピングされたIdPリストがないことを意味します。
// ユーザーに現在のアカウントが退会していることを伝えてください。
Gamebase.Withdraw((error) =>
{
...
});
break;
}
case GamebaseIdPRevokedCode.OVERWRITE_LOGIN_AND_REMOVE_MAPPING:
{
// 現在使用停止しているIdPでログインしていて、使用停止したIdP以外のIdPがマッピングされている場合を意味します。
// ユーザーがauthMappingListのうちどのIdPで再度ログインするか選択し、選択したIdPでログインした後、使用停止したIdPについては連動を解除してください。
var selectedIdP = "ユーザーが選択したIdP";
var additionalInfo = new Dictionary<string, object>()
{
{ GamebaseAuthProviderCredential.IGNORE_ALREADY_LOGGED_IN, true }
};
Gamebase.Login(selectedIdP, additionalInfo, (authToken, loginError) =>
{
if (Gamebase.IsSuccess(loginError) == true)
{
Gamebase.RemoveMapping(revokedIdP, (mappingError) =>
{
...
});
}
});
break;
}
case GamebaseIdPRevokedCode.REMOVE_MAPPING:
{
// 現在のアカウントにマッピングされているIdPのうち使用停止しているIdPがある場合を意味します。
// ユーザーに現在のアカウントで使用停止しているIdPが連動解除されたことを伝えてください。
Gamebase.RemoveMapping(revokedIdP, (error) =>
{
...
});
break;
}
}
}
Example
public void AddEventHandlerSample()
{
Gamebase.AddEventHandler(GamebaseEventHandler);
}
private void GamebaseEventHandler(GamebaseResponse.Event.GamebaseEventMessage message)
{
switch (message.category)
{
case GamebaseEventCategory.LOGGED_OUT:
{
GamebaseResponse.Event.GamebaseEventLoggedOutData loggedData = GamebaseResponse.Event.GamebaseEventLoggedOutData.From(message.data);
if (loggedData != null)
{
// There was a problem with the access token.
// Call login again.
}
break;
}
}
}
Example
public void AddEventHandlerSample()
{
Gamebase.AddEventHandler(GamebaseEventHandler);
}
private void GamebaseEventHandler(GamebaseResponse.Event.GamebaseEventMessage message)
{
switch (message.category)
{
case GamebaseEventCategory.SERVER_PUSH_APP_KICKOUT_MESSAGE_RECEIVED:
case GamebaseEventCategory.SERVER_PUSH_APP_KICKOUT:
case GamebaseEventCategory.SERVER_PUSH_TRANSFER_KICKOUT:
{
GamebaseResponse.Event.GamebaseEventServerPushData serverPushData = GamebaseResponse.Event.GamebaseEventServerPushData.From(message.data);
if (serverPushData != null)
{
CheckServerPush(message.category, serverPushData);
}
break;
}
default:
{
break;
}
}
}
private void CheckServerPush(string category, GamebaseResponse.Event.GamebaseEventServerPushData data)
{
if (category.Equals(GamebaseEventCategory.SERVER_PUSH_APP_KICKOUT) == true)
{
// Kicked out from Gamebase server.(Maintenance, banned or etc.)
// And the game user closes the kickout pop-up.
// Return to title and initialize Gamebase again.
}
else if (category.Equals(GamebaseEventCategory.SERVER_PUSH_APP_KICKOUT_MESSAGE_RECEIVED) == true)
{
// Currently, the kickout pop-up is displayed.
// If your game is running, stop it.
}
else if (category.Equals(GamebaseEventCategory.SERVER_PUSH_TRANSFER_KICKOUT) == true)
{
// If the user wants to move the guest account to another device,
// if the account transfer is successful,
// the login of the previous device is released,
// so go back to the title and try to log in again.
}
}
VO
public class GamebaseEventObserverData
{
// 状態値を表す情報です。
public int code;
// 状態に関連するメッセージ情報です。
public string message;
// 追加情報用の予備フィールドです。
public string extras;
}
Example
public void AddEventHandlerSample()
{
Gamebase.AddEventHandler(GamebaseEventHandler);
}
private void GamebaseEventHandler(GamebaseResponse.Event.GamebaseEventMessage message)
{
switch (message.category)
{
case GamebaseEventCategory.OBSERVER_LAUNCHING:
{
GamebaseResponse.Event.GamebaseEventObserverData observerData = GamebaseResponse.Event.GamebaseEventObserverData.From(message.data);
if(observerData != null)
{
CheckLaunchingStatus(observerData);
}
break;
}
case GamebaseEventCategory.OBSERVER_NETWORK:
{
GamebaseResponse.Event.GamebaseEventObserverData observerData = GamebaseResponse.Event.GamebaseEventObserverData.From(message.data);
if (observerData != null)
{
CheckNetwork(observerData);
}
break;
}
case GamebaseEventCategory.OBSERVER_HEARTBEAT:
{
GamebaseResponse.Event.GamebaseEventObserverData observerData = GamebaseResponse.Event.GamebaseEventObserverData.From(message.data);
if (observerData != null)
{
CheckHeartbeat(observerData);
}
break;
}
case GamebaseEventCategory.OBSERVER_WEBVIEW:
{
GamebaseResponse.Event.GamebaseEventObserverData observerData = GamebaseResponse.Event.GamebaseEventObserverData.From(message.data);
if (observerData != null)
{
CheckWebView(observerData);
}
break;
}
case GamebaseEventCategory.OBSERVER_INTROSPECT:
{
// Introspect error
GamebaseResponse.Event.GamebaseEventObserverData observerData = GamebaseResponse.Event.GamebaseEventObserverData.From(message.data);
int errorCode = observerData.code;
string errorMessage = observerData.message;
break;
}
default:
{
break;
}
}
}
private void CheckLaunchingStatus(GamebaseResponse.Event.GamebaseEventObserverData observerData)
{
switch (observerData.code)
{
case GamebaseLaunchingStatus.IN_SERVICE:
{
// Service is now normally provided.
break;
}
// ...
case GamebaseLaunchingStatus.INTERNAL_SERVER_ERROR:
{
// Error in internal server.
break;
}
}
}
private void CheckNetwork(GamebaseResponse.Event.GamebaseEventObserverData observerData)
{
switch ((GamebaseNetworkType)observerData.code)
{
case GamebaseNetworkType.TYPE_NOT:
{
// Network disconnected.
break;
}
case GamebaseNetworkType.TYPE_MOBILE:
case GamebaseNetworkType.TYPE_WIFI:
case GamebaseNetworkType.TYPE_ANY:
{
// Network connected.
break;
}
}
}
private void CheckHeartbeat(GamebaseResponse.Event.GamebaseEventObserverData observerData)
{
switch (observerData.code)
{
case GamebaseErrorCode.INVALID_MEMBER:
{
// You can check the invalid user session in here.
// ex) After transferred account to another device.
break;
}
case GamebaseErrorCode.BANNED_MEMBER:
{
// You can check the banned user session in here.
break;
}
}
}
private void CheckWebView(GamebaseResponse.Event.GamebaseEventObserverData observerData)
{
switch (observerData.code)
{
case GamebaseWebViewEventType.OPENED:
{
// WebView opened.
break;
}
case GamebaseWebViewEventType.CLOSED:
{
// WebView closed.
break;
}
}
}
Example
public void AddEventHandlerSample()
{
Gamebase.AddEventHandler(GamebaseEventHandler);
}
private void GamebaseEventHandler(GamebaseResponse.Event.GamebaseEventMessage message)
{
switch (message.category)
{
case GamebaseEventCategory.PURCHASE_UPDATED:
{
GamebaseResponse.Event.PurchasableReceipt purchasableReceipt = GamebaseResponse.Event.PurchasableReceipt.From(message.data);
if (purchasableReceipt != null)
{
// If the user got item by 'Promotion Code',
// this event will be occurred.
}
break;
}
default:
{
break;
}
}
}
VO
public class PushMessage
{
// メッセージ固有のidです。
public string id;
// Pushメッセージタイトルです。
public string title;
// Pushメッセージ本文内容です。
public string body;
// JSON形式でPush送信時、送信したカスタム情報を確認できます。
public string extras;
}
Example
public void AddEventHandlerSample()
{
Gamebase.AddEventHandler(GamebaseEventHandler);
}
private void GamebaseEventHandler(GamebaseResponse.Event.GamebaseEventMessage message)
{
switch (message.category)
{
case GamebaseEventCategory.PUSH_RECEIVED_MESSAGE:
{
GamebaseResponse.Event.PushMessage pushMessage = GamebaseResponse.Event.PushMessage.From(message.data);
if (pushMessage != null)
{
// When you received push message.
// By converting the extras field of the push message to JSON,
// you can get the custom information added by the user when sending the push.
// (For Android, an 'isForeground' field is included so that you can check if received in the foreground state.
}
break;
}
default:
{
break;
}
}
}
Example
public void AddEventHandlerSample()
{
Gamebase.AddEventHandler(GamebaseEventHandler);
}
private void GamebaseEventHandler(GamebaseResponse.Event.GamebaseEventMessage message)
{
switch (message.category)
{
case GamebaseEventCategory.PUSH_CLICK_MESSAGE:
{
GamebaseResponse.Event.PushMessage pushMessage = GamebaseResponse.Event.PushMessage.From(message.data);
if (pushMessage != null)
{
// When you clicked push message.
}
break;
}
default:
{
break;
}
}
}
VO
class PushAction
{
// ボタンアクション種類です。
public string actionType;
// PushMessageデータです。
public PushMessage message;
// Pushコンソールで入力したユーザーテキストです。
public string userText;
}
Example
public void AddEventHandlerSample()
{
Gamebase.AddEventHandler(GamebaseEventHandler);
}
private void GamebaseEventHandler(GamebaseResponse.Event.GamebaseEventMessage message)
{
switch (message.category)
{
case GamebaseEventCategory.PUSH_CLICK_ACTION:
{
GamebaseResponse.Event.PushAction pushAction = GamebaseResponse.Event.PushAction.From(message.data);
if (pushAction != null)
{
// When you clicked action button by 'Rich Message'.
}
break;
}
default:
{
break;
}
}
}
Game指標をGamebase Serverに伝送できます。
[注意]
Gamebase AnalyticsでサポートするすべてのAPIは、ログイン後に呼び出すことができます。
[TIP]
Gamebase.Purchase.RequestPurchase APIを呼び出して決済を完了すると、自動的に指標を伝送します。
Analyticsコンソールの使用方法は、下記のガイドを参照してください。
ゲームログイン後、ゲームユーザーレベル情報を指標として伝送できます。
[注意]
ゲームログイン後にsetGameUserData APIを呼び出さない場合、他の指標でレベル情報が抜ける場合があります。
APIの呼び出しに必要なパラメータは下記の通りです。
GameUserData
Name | Mandatory(M) / Optional(O) | type | Desc |
---|---|---|---|
userLevel | M | int | ゲームユーザーレベルを表すフィールドです。 |
channelId | O | string | チャンネルを表すフィールドです。 |
characterId | O | string | キャラクター名を表すフィールドです。 |
characterClassId | O | string | 職業を表すフィールドです。 |
API
Supported Platforms ■ UNITY_IOS ■ UNITY_ANDROID ■ UNITY_STANDALONE ■ UNITY_WEBGL ■ UNITY_EDITOR
static void SetGameUserData(GamebaseRequest.Analytics.GameUserData gameUserData)
Example
public void SetGameUserData(int userLevel, string channelId, string characterId, string characterClassId)
{
GamebaseRequest.Analytics.GameUserData gameUserData = new GamebaseRequest.Analytics.GameUserData(userLevel);
gameUserData.channelId = channelId;
gameUserData.characterId = characterId;
gameUserData.characterClassId = characterClassId;
Gamebase.Analytics.SetGameUserData(gameUserData);
}
レベルアップすると、ゲームユーザーレベル情報を指標として伝送できます。
APIの呼び出しに必要なパラメータは下記の通りです。
LevelUpData
Name | Mandatory(M) / Optional(O) | type | Desc |
---|---|---|---|
userLevel | M | int | ゲームユーザーレベルを表すフィールドです。 |
levelUpTime | O | long | Epoch Timeで入力します。Millisecond単位で入力します。 |
API
Supported Platforms ■ UNITY_IOS ■ UNITY_ANDROID ■ UNITY_STANDALONE ■ UNITY_WEBGL ■ UNITY_EDITOR
static void TraceLevelUp(GamebaseRequest.Analytics.LevelUpData levelUpData)
Example
public void TraceLevelUp(int userLevel, long levelUpTime)
{
GamebaseRequest.Analytics.LevelUpData levelUpData = new GamebaseRequest.Analytics.LevelUpData(userLevel, levelUpTime);
Gamebase.Analytics.TraceLevelUp(levelUpData);
}
Gamebaseは、顧客の問い合わせに対応するための機能を提供します。
[TIP]
NHN Cloud Contactサービスと連携して使用すると、顧客からの問い合わせに簡単に対応できます。 詳細はNHN Cloud Contactサービスの利用ガイドを参照してください。 NHN Cloud Online Contact Guide
Gamebaseコンソール > App > InApp URL > Service centerでは、以下の3つのタイプのサポートを選択できます。
Customer Service Type | Required Login |
---|---|
Developer customer center | X |
Gamebase customer center | △ |
NHN Cloud Online Contact | △ |
タイプに応じてGamebase SDKのサポートAPIは次のURLを使用します。
サポートWebビューを表示します。 URLはサポートタイプに基づいて決定されます。 ContactConfigurationでURLに追加情報を伝達できます。
GamebaseRequest.Contact.Configuration
Parameter | Mandatory(M) / Optional(O) |
Values | Description |
---|---|---|---|
userName | O | string | ユーザー名(ニックネーム) default : null |
additionalURL | O | string | 開発会社独自のサポートURLの後ろにつく追加のURL default : null |
additionalParameters | O | Dictionary |
サポートURLの後ろにつく追加のパラメータ default : null |
extraData | O | Dictionary |
開発会社が任意のextra dataをサポートオープン時に伝達 default : null |
API
Supported Platforms ■ UNITY_IOS ■ UNITY_ANDROID ■ UNITY_STANDALONE
static void OpenContact(GamebaseCallback.ErrorDelegate callback);
static void OpenContact(GamebaseRequest.Contact.Configuration configuration, GamebaseCallback.ErrorDelegate callback);
ErrorCode
Error Code | Description |
---|---|
NOT_INITIALIZED(1) | Gamebase.initializeが呼び出されませんでした。 |
UI_CONTACT_FAIL_INVALID_URL(6911) | サポートURLが存在しません。 GamebaseコンソールのサポートURLを確認してください。 |
UI_CONTACT_FAIL_ISSUE_SHORT_TERM_TICKET(6912) | ユーザーを識別するための臨時チケットの発行に失敗しました。 |
UI_CONTACT_FAIL_ANDROID_DUPLICATED_VIEW(6913) | サポートWebビューがすでに表示中です。 |
Example
public void SampleOpenContact()
{
Gamebase.Contact.OpenContact((error) =>
{
if (Gamebase.IsSuccess(error) == true)
{
// A user close the contact web view.
}
else if (error.code == GamebaseErrorCode.UI_CONTACT_FAIL_INVALID_URL) // 6911
{
// TODO: Gamebase Console Service Center URL is invalid.
// Please check the url field in the NHN Cloud Gamebase Console.
}
else if (error.code == GamebaseErrorCode.UI_CONTACT_FAIL_ANDROID_DUPLICATED_VIEW) // 6913
{
// The customer center web view is already opened.
}
else
{
// An error occur when opening the contact web view.
}
});
}
[注意]
サポートへお問い合わせする時、ファイルの添付が必要な場合があります。 そのため、ユーザーからカメラ撮影やStorage保存の権限をランタイムに取得する必要があります。
Androidユーザー
Unityユーザーは、以下のガイドを参照して実装できます。 Unity Guide : Requesting Permissions
iOSユーザー
- info.plistに'Privacy - Camera Usage Description', 'Privacy - Photo Library Usage Description'を設定してください。
サポートWebビューを表示するのに使用されるURLをリターンします。
API
static void RequestContactURL(GamebaseCallback.GamebaseDelegate<string> callback);
static void RequestContactURL(GamebaseRequest.Contact.Configuration configuration, GamebaseCallback.GamebaseDelegate<string> callback);
ErrorCode
Error Code | Description |
---|---|
NOT_INITIALIZED(1) | Gamebase.initializeが呼び出されませんでした。 |
UI_CONTACT_FAIL_INVALID_URL(6911) | サポートURLが存在しません。 GamebaseコンソールのサポートURLを確認してください。 |
UI_CONTACT_FAIL_ISSUE_SHORT_TERM_TICKET(6912) | ユーザーを識別するための臨時チケットの発行に失敗しました。 |
Example
public void SampleRequestContactURL()
{
var configuration = new GamebaseRequest.Contact.Configuration()
{
userName = "User Name"
};
Gamebase.Contact.RequestContactURL(configuration, (url, error) =>
{
if (Gamebase.IsSuccess(error) == true)
{
// Open webview with 'contactUrl'
}
else if (error.code == GamebaseErrorCode.UI_CONTACT_FAIL_INVALID_URL) // 6911
{
// TODO: Gamebase Console Service Center URL is invalid.
// Please check the url field in the NHN Cloud Gamebase Console.
}
else
{
// An error occur when requesting the contact web view url.
}
});
}