Gamebaseで対応している付加機能について説明します。
API
+ (NSString *)idfa;
[注意]
iOS 14から、IDFA値をリクエストする時、ユーザー権限を取得する必要があります。 ユーザー権限をリクエストする時に表示させる文言をinfo.plistに設定する必要があります。 info.plistに「Privacy - Tracking Usage Description」の設定を行ってください。
API
+ (NSString *)deviceLanguageCode;
メンテナンスポップアップなどで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はGamebaseコンソールで設定したデフォルト言語に指定されます。
- もしGamebaseコンソールで言語設定を行っていなければ英語(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 |
該当する言語コードは、「TCGBConstants.h」に定義されています。
#pragma mark - DisplayLanguageCode
extern NSString* const kTCGBDisplayLanguageCodeGerman;
extern NSString* const kTCGBDisplayLanguageCodeEnglish;
extern NSString* const kTCGBDisplayLanguageCodeSpanish;
extern NSString* const kTCGBDisplayLanguageCodeFinnish;
extern NSString* const kTCGBDisplayLanguageCodeFrench;
extern NSString* const kTCGBDisplayLanguageCodeIndonesian;
extern NSString* const kTCGBDisplayLanguageCodeItalian;
extern NSString* const kTCGBDisplayLanguageCodeJapanese;
extern NSString* const kTCGBDisplayLanguageCodeKorean;
extern NSString* const kTCGBDisplayLanguageCodePortuguese;
extern NSString* const kTCGBDisplayLanguageCodeRussian;
extern NSString* const kTCGBDisplayLanguageCodeThai;
extern NSString* const kTCGBDisplayLanguageCodeVietnamese;
extern NSString* const kTCGBDisplayLanguageCodeMalay;
extern NSString* const kTCGBDisplayLanguageCodeChineseSimplified;
extern NSString* const kTCGBDisplayLanguageCodeChineseTraditional;
Gamebaseを初期化する際にDisplay Languageを設定することができます。
API
+ (void)initializeWithConfiguration:(TCGBConfiguration *)configuration completion:(InitializeCompletion)completion;
Example
- (void)initializeWithDisplayLanguageConfiguration {
TCGBConfiguration* config = [TCGBConfiguration configurationWithAppID:@"your app(project) ID" appVersion:@"your app version"];
[config setDisplayLanguageCode:kTCGBDisplayLanguageCodeEnglish];
[TCGBGamebase initializeWithConfiguration:config completion:^(LaunchingInfo launchingData, TCGBError *error) {
if ([TCGBGamebase isSuccessWithError:error] == YES) {
NSLog(@"TCGBGamebase initialization is succeeded");
// Check status of you app.
// If status of app is maintenance or terminated service or etc, you must blocking UI and you should make user cannot log in your service.
// You can use [TCGBLaunching launchingStatus] method to check status of your app.
}
else {
NSLog(@"TCGBGamebase initialization is failed with error:[%@]", [error description]);
}
}];
}
Gamebaseを初期化する際に入力されたDisplay Languageを変更することができます。
API
+ (void)setDisplayLanguageCode:(NSString *)languageCode;
Example
- (void)setDisplayLanguageCode {
[TCGBGamebase setDisplayLanguageCode:kTCGBDisplayLanguageCodeEnglish];
}
現在適用されているDisplay Languageを照会することができます。
API
+ (NSString *)displayLanguageCode;
Example
- (void)getDisplayLanguageCode()
{
NSString* displayLanguage = [TCGBGamebase displayLanguageCode];
}
Gamebaseで提供するデフォルト言語(ko、en、ja、zh-CN、zh-TW、th)以外の言語を使用したい場合は、 XcodeプロジェクトのCopy Bundle Resourcesに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": "サービス終了"
},
"zh-CN": {
"common_ok_button": "确定",
"common_cancel_button": "取消",
...
"launching_service_closed_title": "关闭服务"
},
"zh-TW": {
"common_ok_button": "好",
"common_cancel_button": "取消",
...
"launching_service_closed_title": "服務關閉"
},
"th": {
"common_ok_button": "ยืนยัน",
"common_cancel_button": "ยกเลิก",
...
"launching_service_closed_title": "ปิดให้บริการ"
},
"de": {},
"es": {},
...
"ms": {}
}
他の言語の追加が必要な場合は、localizedstring.jsonファイルの該当言語コードに"key":"value"形式で値を追加してください。
{
"en":{
"common_ok_button":"OK",
"common_cancel_button":"Cancel",
...
"launching_service_closed_title":"Service Closed"
},
...
"vi": {
"common_ok_button": "value",
"common_cancel_button": "value",
...
"launching_service_closed_title": "value"
},
"ms": {}
}
初期化及びsetDisplayLanguageCode:APIを通してDisplay Languageを設定する場合、最終的に適用されるDisplay Languageは、入力した値と違う値が適用されることがあります。
enがデフォルト値に設定されます。API
+ (NSString *)deviceCountryCode;
API
+ (void)addEventHandler:(GamebaseEventHandler)handler;
+ (void)removeEventHandler:(GamebaseEventHandler)handler;
+ (void)removeAllEventHandler;
VO
@interface TCGBGamebaseEventMessage : NSObject <TCGBValueObject>
@property (nonatomic, strong, nonnull) NSString* category;
@property (nonatomic, strong, nullable) NSString* data;
@end
Example
- (void)eventHandler_addEventHandler {
void(^eventHandler)(TCGBGamebaseEventMessage *) = ^(TCGBGamebaseEventMessage * _Nonnull message) {
if ([message.category isEqualToString:kTCGBLoggedOut] == YES) {
if ([message.category isEqualToString:kTCGBIdPRevoked] == YES) {
TCGBGamebaseEventIdPRevokedData* idPRevokedData = [TCGBGamebaseEventIdPRevokedData gamebaseEventIdPRevokedDataFromJsonString:message.data];
if (idPRevokedData != nil) {
//TODO: process idp revoked
}
} else if ([message.category isEqualToString:kTCGBLoggedOut] == YES) {
TCGBGamebaseEventLoggedOutData* loggedOutData = [TCGBGamebaseEventLoggedOutData gamebaseEventLoggedOutDataFromJsonString:message.data];
if (loggedOutData != nil) {
//TODO: process loggedOut
}
} else if ([message.category isEqualToString:kTCGBServerPushAppKickoutMessageReceived] == YES
|| [message.category isEqualToString:kTCGBServerPushAppKickout] == YES
|| [message.category isEqualToString:kTCGBServerPushTransferKickout] == YES) {
TCGBGamebaseEventServerPushData* serverPushData = [TCGBGamebaseEventServerPushData gamebaseEventServerPushDataFromJsonString:message.data];
if (serverPushData != nil) {
//TODO: process server push
}
} else if ([message.category isEqualToString:kTCGBObserverLaunching] == YES
|| [message.category isEqualToString:kTCGBObserverHeartbeat] == YES
|| [message.category isEqualToString:kTCGBObserverNetwork] == YES) {
TCGBGamebaseEventObserverData* observerData = [TCGBGamebaseEventObserverData gamebaseEventObserverDataFromJsonString:message.data];
if (observerData != nil) {
//TODO: process observer
}
} else if ([message.category isEqualToString:kTCGBPurchaseUpdated] == YES) {
} else if ([message.category isEqualToString:kTCGBPushReceivedMessage] == YES) {
} else if ([message.category isEqualToString:kTCGBPushClickMessage] == YES) {
} else if ([message.category isEqualToString:kTCGBPushClickAction] == YES) {
}
};
[TCGBGamebase addEventHandler:eventHandler];
}
Event種類 |
GamebaseEventCategory | VO変換方法 | 備考 |
|---|---|---|---|
| IdPRevoked | kTCGBIdPRevoked | [TCGBGamebaseEventIdPRevokedData gamebaseEventIdPRevokedDataFromJsonString:message.data] | - |
| LoggedOut | kTCGBLoggedOut | [TCGBGamebaseEventLoggedOutData gamebaseEventLoggedOutDataFromJsonString:message.data] | - |
| ServerPush | kTCGBServerPushAppKickoutMessageReceived kTCGBServerPushAppKickout kTCGBServerPushTransferKickout |
[TCGBGamebaseEventServerPushData gamebaseEventServerPushDataFromJsonString:message.data] | - |
| Observer | kTCGBObserverLaunching kTCGBObserverHeartbeat kTCGBObserverNetwork |
[TCGBGamebaseEventObserverData gamebaseEventObserverDataFromJsonString:message.data] | - |
| Purchase - プロモーション決済 - 遅延決済 |
kTCGBPurchaseUpdated | [TCGBPurchasableReceipt purchasableReceiptFromJsonString:message.data] | - |
| Push - メッセージ受信 |
kTCGBPushReceivedMessage | [TCGBPushMessage pushMessageFromJsonString:message.data] | - |
| Push - メッセージクリック |
kTCGBPushClickMessage | [TCGBPushMessage pushFromJsonString:message.data] | - |
| Push - アクションクリック |
kTCGBPushClickAction | [TCGBPushMessage pushFromJsonString:message.data] | RichMessageボタンを押すと動作します。 |
[参考]
iOS Appleidログインを使用する場合にのみ発生するイベントです。
@interface TCGBGamebaseEventIdPRevokedData : NSObject <TCGBValueObject>
@property (nonatomic, assign) int64_t code;
@property (nonatomic, strong) NSString* idPType;
@property (nonatomic, strong) NSArray<NSString *>* authMappingList;
@property (nonatomic, strong) NSString* extras;
@end
Example
- (void)eventHandler_addEventHandler {
void(^eventHandler)(TCGBGamebaseEventMessage *) = ^(TCGBGamebaseEventMessage * _Nonnull message) {
if ([message.category isEqualToString:kTCGBIdPRevoked] == YES) {
// TODO: process logout, then login again.
}
};
[TCGBGamebase addEventHandler:eventHandler];
}
Example
- (void)eventHandler_addEventHandler {
void(^eventHandler)(TCGBGamebaseEventMessage *) = ^(TCGBGamebaseEventMessage * _Nonnull message) {
[self printLogAndShowAlertWithData:[message prettyJsonString] error:nil alertTitle:@"addEventHandler Result"];
if ([message.category isEqualToString:kTCGBLoggedOut] == YES) {
TCGBGamebaseEventLoggedOutData* loggedOutData = [TCGBGamebaseEventLoggedOutData gamebaseEventLoggedOutDataFromJsonString:message.data];
if (loggedOutData != nil) {
//TODO: process loggedOut
}
}
};
[TCGBGamebase addEventHandler:eventHandler];
}
Example
- (void)eventHandler_addEventHandler {
void(^eventHandler)(TCGBGamebaseEventMessage *) = ^(TCGBGamebaseEventMessage * _Nonnull message) {
[self printLogAndShowAlertWithData:[message prettyJsonString] error:nil alertTitle:@"addEventHandler Result"];
if ([message.category isEqualToString:kTCGBServerPushAppKickoutMessageReceived] == YES) {
TCGBGamebaseEventServerPushData* serverPushData = [TCGBGamebaseEventServerPushData gamebaseEventServerPushDataFromJsonString:message.data];
if (serverPushData != nil) {
//TODO: process server push
}
} else if ([message.category isEqualToString:kTCGBServerPushAppKickout] == YES) {
TCGBGamebaseEventServerPushData* serverPushData = [TCGBGamebaseEventServerPushData gamebaseEventServerPushDataFromJsonString:message.data];
if (serverPushData != nil) {
//TODO: process server push
}
} else if ([message.category isEqualToString:kTCGBServerPushTransferKickout] == YES) {
TCGBGamebaseEventServerPushData* serverPushData = [TCGBGamebaseEventServerPushData gamebaseEventServerPushDataFromJsonString:message.data];
if (serverPushData != nil) {
//TODO: process server push
}
}
};
[TCGBGamebase addEventHandler:eventHandler];
}
VO
@interface TCGBGamebaseEventObserverData : NSObject <TCGBValueObject>
@property (nonatomic, assign) int64_t code;
@property (nonatomic, strong, nullable) NSString* message;
@property (nonatomic, strong, nullable) NSString* extras;
'@end
Example
- (void)eventHandler_addEventHandler {
void(^eventHandler)(TCGBGamebaseEventMessage *) = ^(TCGBGamebaseEventMessage * _Nonnull message) {
if ([message.category isEqualToString:kTCGBObserverLaunching] == YES) {
TCGBGamebaseEventObserverData* observerData = [TCGBGamebaseEventObserverData gamebaseEventObserverDataFromJsonString:message.data];
if (observerData != nil) {
int launchingStatusCode = observerData.code;
NSString* launchingMessage = observerData.message;
switch (launchingStatusCode) {
case IN_SERVICE:
// Finished maintenance.
break;
case INSPECTING_SERVICE:
case INSPECTING_ALL_SERVICES:
// Under maintenance.
break;
...
}
}
}
else if ([message.category isEqualToString:kTCGBObserverHeartbeat] == YES) {
TCGBGamebaseEventObserverData* observerData = [TCGBGamebaseEventObserverData gamebaseEventObserverDataFromJsonString:message.data];
int errorCode = observerData.code;
switch (errorCode) {
case TCGB_ERROR_INVALID_MEMBER:
// You can check the invalid user session in here.
// ex) After transferred account to another device.
break;
case TCGB_ERROR_BANNED_MEMBER:
// You can check the banned user session in here.
break;
}
}
else if ([message.category isEqualToString:kTCGBObserverNetwork] == YES) {
TCGBGamebaseEventObserverData* observerData = [TCGBGamebaseEventObserverData gamebaseEventObserverDataFromJsonString:message.data];
NetworkStatus networkTypeCode = observerData.code;
// You can check the changed network status in here.
if (networkTypeCode == NotReachable || networkTypeCode == ReachabilityIsNotDefined) {
// Network disconnected.
} else {
// Network connected.
}
}
};
[TCGBGamebase addEventHandler:eventHandler];
}
Example
- (void)eventHandler_addEventHandler {
void(^eventHandler)(TCGBGamebaseEventMessage *) = ^(TCGBGamebaseEventMessage * _Nonnull message) {
TCGBPurchasableReceipt* receipt = [TCGBPurchasableReceipt purchasableReceiptFromJsonString:message.data];
if (receipt != nil) {
// If a promotion or pending purchase is completed, this event will be occurred.
}
};
[TCGBGamebase addEventHandler:eventHandler];
}
VO
@interface TCGBPushMessage : NSObject <TCGBValueObject>
@property (nonatomic, strong, nonnull) NSString* identifier;
@property (nonatomic, strong, nullable) NSString* title;
@property (nonatomic, strong, nullable) NSString* body;
@property (nonatomic, strong, nonnull) NSString* extras;
@end
Example
- (void)eventHandler_addEventHandler {
void(^eventHandler)(TCGBGamebaseEventMessage *) = ^(TCGBGamebaseEventMessage * _Nonnull message) {
if ([message.category isEqualToString:kTCGBPushReceivedMessage] == YES) {
TCGBPushMessage* pushMessage = [TCGBPushMessage pushMessageFromJsonString:message.data];
if (pusMessage != nil) {
//TODO: process
}
}
};
[TCGBGamebase addEventHandler:eventHandler];
}
Example
- (void)eventHandler_addEventHandler {
void(^eventHandler)(TCGBGamebaseEventMessage *) = ^(TCGBGamebaseEventMessage * _Nonnull message) {
if ([message.category isEqualToString:kTCGBPushClickMessage] == YES) {
TCGBPushMessage* pushMessage = [TCGBPushMessage pushMessageFromJsonString:message.data];
if (pusMessage != nil) {
//TODO: process
}
}
};
[TCGBGamebase addEventHandler:eventHandler];
}
VO
@interface TCGBPushAction : NSObject <TCGBValueObject>
@property (nonatomic, strong, nonnull) NSString* actionType;
@property (nonatomic, strong, nullable) TCGBPushMessage* message;
@property (nonatomic, strong, nullable) NSString* userText;
@end
Example
- (void)eventHandler_addEventHandler {
void(^eventHandler)(TCGBGamebaseEventMessage *) = ^(TCGBGamebaseEventMessage * _Nonnull message) {
if ([message.category isEqualToString:kTCGBPushClickAction] == YES) {
TCGBPushAction* pushMessage = [TCGBPushAction pushActionFromJsonString:message.data];
if (pushAction != nil) {
//TODO: process
}
}
};
[TCGBGamebase addEventHandler:eventHandler];
}
ゲーム指標をGamebaseサーバーに伝送できます。
[注意]
Gamebase AnalyticsでサポートするすべてのAPIは、ログイン後に呼び出すことができます。
[TIP]
TCGBPurchaseのrequestPurchase APIを呼び出して決済するか、setPromotionIAPHandlerを呼び出してプロモーション決済を完了すると、自動的に指標を伝送します。
Analyticsコンソールの使用方法は、下記のガイドを参照してください。
ゲームログイン後、ゲームユーザーレベル情報を指標として伝送できます。
[注意]
ゲームログイン後にsetGameUserData APIを呼び出さない場合、他の指標でレベル情報が抜ける場合があります。
APIの呼び出しに必要なパラメータは下記の通りです。
ゲームログイン後にsetGameUserData APIを呼び出さない場合、他の指標でレベル情報が抜ける場合があります。
GameUserData
| Name | Mandatory(M) / Optional(O) | type | Desc |
|---|---|---|---|
| userLevel | M | int | ゲームユーザーレベルを表すフィールドです。 |
| channelId | O | String | チャンネルを表すフィールドです。 |
| characterId | O | String | キャラクター名を表すフィールドです。 |
| classId | O | String | 職業を表すフィールドです。 |
API
+ (void)setGameUserData:(nonnull TCGBAnalyticsGameUserData *)gameUserData;
Example
- (void)setGameUserDataWithLevel:(int)level channelId:(NSString *)channelId characterId:(NSString *)characterId {
TCGBAnalyticsGameUserData* gameUserData = [TCGBAnalyticsGameUserData gameUserDataWithUserLevel:level];
[gameUserData setChannelId:channelId];
[gameUserData setCharacterId:characterId];
[TCGBAnalytics setGameUserData:gameUserData];
}
レベルアップすると、ゲームユーザーレベル情報を指標として伝送できます。
APIの呼び出しに必要なパラメータは下記の通りです。
LevelUpData
| Name | Mandatory (M) / Optional (O) | type | Desc |
|---|---|---|---|
| userLevel | M | int | ゲームユーザーレベルを表すフィールドです。 |
| levelUpTime | M | long | Epoch timeで入力します。ミリ秒(ms)単位で入力します。 |
API
+ (void)traceLevelUpWithLevelUpData:(nonnull TCGBAnalyticsLevelUpData *)levelUpData;
Example
- (void)traceLevelUpWith:(int)level levelUpTime:(long long)levelUpTime channelId:(NSString *)channelId characterId:(NSString *)characterId {
TCGBAnalyticsLevelUpData* levelUpData = [TCGBAnalyticsLevelUpData levelUpDataWithUserLevel:level levelUpTime:levelUpTime];
[TCGBAnalytics traceLevelUpWithLevelUpData:levelUpData];
}
Gamebaseでは顧客からの問い合わせに対応するための機能を提供します。
[TIP]
NHN Cloud Contactサービスと連動して使用すると、より簡単に顧客からのお問い合わせに対応できます。 詳細なNHN Cloud Contactサービスの利用方法は以下のガイドを参照してください。 NHN Cloud Online Contact Guide
[注意]
サポートへのお問い合わせの際、ファイルを添付するために、カメラまたはアルバムへのアクセスが必要な場合があります。 info.plistに'Privacy - Camera Usage Description', 'Privacy — Microphone Usage Description'設定をしてください。
Gamebase コンソール > App > Customer serviceでは、以下のように3つのタイプのサポートを選択できます。

| Customer Service Type | Required Login |
|---|---|
| Developer customer center | X |
| Gamebase customer center | △ |
| NHN Cloud Online Contact | △ |
各タイプに応じて、Gamebase SDKのサポートAPIは次のURLを使用します。
Gamebaseコンソールに入力したサポートURL Webビューを表示できる機能です。 TCGBContactConfigurationでURLに追加情報を伝達できます。
TCGBContactConfiguration
| Parameter | Mandatory(M) / Optional(O) |
Values | Description |
|---|---|---|---|
| userName | O | string | ユーザー名前(ニックネーム) default : nil |
| additionalURL | O | string | 開発会社独自のサポートURLの後ろにつく追加のURL サポートタイプが CUSTOMの場合にのみ使用default : nil |
| additionalParameters | O | dictionary<string, string> | サポートURLの後ろにつく追加のパラメータ default : nil |
| extraData | O | dictionary<string, string> | 開発会社が任意のextra dataをサポートオープン時に伝達 default : nil |
API
+ (void)openContactWithViewController:(UIViewController *)viewController
completion:(void(^)(TCGBError *error))completion;
+ (void)openContactWithViewController:(UIViewController *)viewController
configuration:(TCGBContactConfiguration *)configuration
completion:(void(^)(TCGBError *error))completion;
Error Code
| Error | Error Code | Description |
|---|---|---|
| TCGB_ERROR_NOT_INITIALIZED | 1 | Gamebaseが初期化されていません。 |
| TCGB_ERROR_UI_CONTACT_FAIL_INVALID_URL | 6911 | サポートURLが存在しません。 GamebaseコンソールのサポートURLを確認してください。 |
| TCGB_ERROR_UI_CONTACT_FAIL_ISSUE_SHORT_TERM_TICKET | 6912 | ユーザーを識別するための臨時チケットの発行に失敗しました。 |
Example
[TCGBContact openContactWithViewController:self completion:^(TCGBError *error) {
if ([TCGBGamebase isSuccessWithError:error] == YES) {
// A user close the contact web view.
} else if (error.code == TCGB_ERROR_UI_CONTACT_FAIL_INVALID_URL) {
// TODO: Gamebase Console Service Center URL is invalid.
// Please check the url field in the TOAST Gamebase Console.
} else {
// TODO: Error occur when opening the contact web view.
}
}];
サポートWebビューを表示するのに使用されるURLを取得できます。
API
+ (void)requestContactURLWithCompletion:(void(^)(NSString *contactUrl, TCGBError *error))completion;
+ (void)requestContactURLWithConfiguration:(TCGBContactConfiguration *)configuration
completion:(void(^)(NSString *contactUrl, TCGBError *error))completion;
Error Code
| Error | Error Code | Description |
|---|---|---|
| TCGB_ERROR_NOT_INITIALIZED | 1 | Gamebaseが初期化されていません。 |
| TCGB_ERROR_UI_CONTACT_FAIL_INVALID_URL | 6911 | サポートURLが存在しません。 GamebaseコンソールのサポートURLを確認してください。 |
| TCGB_ERROR_UI_CONTACT_FAIL_ISSUE_SHORT_TERM_TICKET | 6912 | ユーザーを識別するための臨時チケットの発行に失敗しました。 |
Example
[TCGBContact requestContactURLWithCompletion^(NSString *contactUrl, TCGBError *error){
if ([TCGBGamebase isSuccessWithError:error] == YES) {
NSLog(@"ContactURL : %@", contactUrl);
} else if (error.code == TCGB_ERROR_UI_CONTACT_FAIL_INVALID_URL) {
// TODO: Gamebase Console Service Center URL is invalid.
// Please check the url field in the TOAST Gamebase Console.
} else {
// TODO: Error occur when request contact url.
}
}];