Game > Gamebase > iOS SDK ご利用ガイド > ETC

Additional Features

Gamebaseで対応している付加機能について説明します。

IDFA

  • 端末の広告識別子値をリターンします。

API

+ (NSString *)idfa;

[注意]

iOS 14から、IDFA値をリクエストする時、ユーザー権限を取得する必要があります。 ユーザー権限をリクエストする時に表示させる文言をinfo.plistに設定する必要があります。 info.plistに「Privacy - Tracking Usage Description」の設定を行ってください。

Device Language

  • 端末に設定されている言語コードを返します。
  • 複数の言語が登録されている場合、優先権が最も高い言語だけを返します。

API

+ (NSString *)deviceLanguageCode;

Display Language

メンテナンスポップアップなどで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のクライアントに含まれていない言語セットは直接追加できます。 新規言語セット追加項目を参照してください。

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

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]);
            }
        }];
    }

Set Display Language

Gamebaseを初期化する際に入力されたDisplay Languageを変更することができます。

API

+ (void)setDisplayLanguageCode:(NSString *)languageCode;

Example

- (void)setDisplayLanguageCode {
    [TCGBGamebase setDisplayLanguageCode:kTCGBDisplayLanguageCodeEnglish];
}

Get Display Language

現在適用されているDisplay Languageを照会することができます。

API

+ (NSString *)displayLanguageCode;

Example

- (void)getDisplayLanguageCode()
{
    NSString* displayLanguage = [TCGBGamebase displayLanguageCode];
}

言語セットの新規追加

Gamebaseで提供するデフォルト言語(ko、en、ja、zh-CN、zh-TW、th)以外の言語を使用したい場合は、 XcodeプロジェクトのCopy Bundle Resourceslocalizedstring.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": {}
}

Display Languageの優先順位

初期化及びsetDisplayLanguageCode:APIを通してDisplay Languageを設定する場合、最終的に適用されるDisplay Languageは、入力した値と違う値が適用されることがあります。

  1. 入力されたlanguageCodeがlocalizedstring.jsonファイルに定義されているかどうかを確認します。
  2. 1番が失敗した場合は、Gamebase初期化時、端末に設定された言語コードがlocalizedstring.jsonファイルに定義されているかを確認します。(この値は初期化後、端末に設定された言語を変更しても維持されます。)
  3. 2番が失敗した場合は、Gamebaseコンソールに設定されたデフォルト言語が設定されます。
  4. Gamebaseコンソールに言語設定がなければ、enがデフォルト値に設定されます。

Country Code

  • Gamebaseは、システムの国コード(country code)を次のようなAPIで提供しています。
  • APIごとに特徴があるため、使用用途に合ったAPIを選択してください。

USIM Country Code

  • USIMに記録された国コードを返します。
  • USIMに無効な国コードが記録されていても、追加確認を行わずにそのまま返します。
  • 値が空の場合、'ZZ'を返します。

API

+ (NSString *)usimCountryCode;

Device Country Code

  • OSから伝達された端末地域設定を、追加確認を行わずにそのまま返します。
  • 端末国コードは設定 > 一般 > 言語および地域 > 地域設定に応じてOSが自動的に決定します。
  • iOSで提供するNSLocaleCountryCodeを使用して取得した値を返します。

API

+ (NSString *)deviceCountryCode;

Intergrated Country Code

  • USIM、端末地域設定の順序で国コードを確認して返します。
  • country APIは次の順序で動作します。
    1. USIMに記録されている国コードを確認し、値があれば別途確認しないでそのまま返します。
  • USIM国コードが空の値の場合は端末国コードを確認し、値があれば追加確認を行わずにそのまま返します。
    1. USIM、端末国コードがどちらも空の値の場合は、'ZZ'を返します。

observer

API

+ (NSString *)countryCode;

Gamebase Event Handler

  • Gamebaseは各種イベントをGamebaseEventHandlerという1つのイベントシステムで全て処理できます。
  • GamebaseEventHandlerは下記のAPIを利用して簡単にHandlerを追加/削除できます。

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: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];
}
  • CategoryはGamebaseEventCategoryクラスに定義されています。
  • イベントは大きくServerPush、Observer、Purchase、Pushに分けられ、各Categoryに基づいて、TCGBGamebaseEventMessage.dataを次の表のような方法でVOに変換できます。
Event種類 GamebaseEventCategory VO変換方法 備考
ServerPush 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ボタンを押すと動作します。

Server Push

  • Gamebaseサーバーからクライアント端末へ送信するメッセージです。
  • GamebaseでサポートするServer Push Typeは次の通りです。
    • kTCGBServerPushAppKickout
      • NHN Cloud GamebaseコンソールのOperation > KickoutでキックアウトServerPushメッセージを登録すると、Gamebaseに接続されたすべてのクライアントでキックアウトメッセージを受信します。
    • kTCGBServerPushTransferKickout
      • Guestアカウントを他の端末へ移行すると、以前の端末でキックアウトメッセージを受信します。

Example

- (void)eventHandler_addEventHandler {
    void(^eventHandler)(TCGBGamebaseEventMessage *) = ^(TCGBGamebaseEventMessage * _Nonnull message) {
        [self printLogAndShowAlertWithData:[message prettyJsonString] error:nil alertTitle:@"addEventHandler Result"];
        if ([message.category isEqualToString:kTCGBServerPushAppKickout] == YES) {
            TCGBGamebaseEventServerPushData* serverPushData = [TCGBGamebaseEventServerPushData gamebaseEventServerPushDataFromJsonString:message.data];
            if (serverPushData != nil) {
                //TODO: process server push
            }
        }
        esle if ([message.category isEqualToString:kTCGBServerPushTransferKickout] == YES) {
            TCGBGamebaseEventServerPushData* serverPushData = [TCGBGamebaseEventServerPushData gamebaseEventServerPushDataFromJsonString:message.data];
            if (serverPushData != nil) {
                //TODO: process server push
            }
        }
    };

    [TCGBGamebase addEventHandler:eventHandler];
}

Observer

  • Gamebase Gamebaseの各種状態変動イベントを処理するシステムです。
  • GamebaseでサポートするObserver Typeは次の通りです。
    • kTCGBObserverLaunching
      • メンテナンスが開始または終了した場合、新しいバージョンが配布されてアップデートが必要な場合など、Launching状態が変更された時に動作します。
      • TCGBGamebaseEventObserverData.code : TCGBLaunchingStatus値を意味します。
        • IN_SERVICE: 200
        • RECOMMEND_UPDATE: 201
        • IN_SERVICE_BY_QA_WHITE_LIST: 202
        • REQUIRE_UPDATE: 300
        • BLOCKED_USER: 301
        • TERMINATED_SERVICE: 302
        • INSPECTING_SERVICE: 303
        • INSPECTING_ALL_SERVICES: 304
        • INTERNAL_SERVER_ERROR: 500
    • kTCGBObserverHeartbeat
      • 退会処理や利用停止により、ユーザーアカウントの状態が変わった時に動作します。
      • TCGBGamebaseEventObserverData.code : TCGBError値を意味します。
        • TCGB_ERROR_INVALID_MEMBER: 6
        • TCGB_ERROR_BANNED_MEMBER: 7
    • kTCGBObserverNetwork
      • ネットワーク変動事項情報を受け取れます。
      • ネットワークが切断されたり、接続された時、またはWi-FiからCellularネットワークに変更された時に動作します。
      • TCGBGamebaseEventObserverData.code : NetworkManager値を意味します。
        • ReachabilityIsNotDefined = -100
        • NotReachable = -1
        • ReachableViaWWAN = 0
        • ReachableViaWifi = 1

VO

@interface TCGBGamebaseEventObserverData : NSObject <TCGBValueObject>

@property (nonatomic, assign)           int64_t     code;
@property (nonatomic, strong, nullable) NSString*   message;
@property (nonatomic, strong, nullable) NSString*   extras;

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];
}

Purchase Updated

  • Promotionコードを入力して商品を獲得した場合に発生するイベントです。
  • 決済領収書情報を取得できます。

Example

- (void)eventHandler_addEventHandler {
    void(^eventHandler)(TCGBGamebaseEventMessage *) = ^(TCGBGamebaseEventMessage * _Nonnull message) {
        TCGBPurchasableReceipt* receipt = [TCGBPurchasableReceipt purchasableReceiptFromJsonString:message.data];
        if (receipt != nil) {
            // If user purchase item from appstore promoting iap
            // this event will be occurred.
        }
    };

    [TCGBGamebase addEventHandler:eventHandler];
}

Push Received Message

  • Pushメッセージが到着した時に発生するイベントです。
  • extrasフィールドをJSONに変換して、Push送信時に送信されたカスタム情報を取得することもできます。

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];
}

Push Click Message

  • 受信したPushメッセージをクリックした時に発生するイベントです。

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];
}

Push Click Action

  • Rich Message機能を利用して作成したボタンをクリックした時に発生するイベントです。
  • actionTypeは、次の項目が提供されます。
    • "OPEN_APP"
    • "OPEN_URL"
    • "REPLY"
    • "DISMISS"

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];
}

Analytics

ゲーム指標をGamebaseサーバーに伝送できます。

[注意]

Gamebase AnalyticsでサポートするすべてのAPIは、ログイン後に呼び出すことができます。

[TIP]

TCGBPurchaseのrequestPurchaseWithItemSeq:viewController:completion APIを呼び出して決済するか、setPromotionIAPHandlerを呼び出してプロモーション決済を完了すると、自動的に指標を伝送します。

Analyticsコンソールの使用方法は、下記のガイドを参照してください。

Game User Data Settings

ゲームログイン後、ゲームユーザーレベル情報を指標として伝送できます。

[注意]

ゲームログイン後に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];
}

Level Up Trace

レベルアップすると、ゲームユーザーレベル情報を指標として伝送できます。

APIの呼び出しに必要なパラメータは下記の通りです。

LevelUpData

Name Mandatory (M) / Optional (O) type Desc
userLevel M int ゲームユーザーレベルを表すフィールドです。
levelUpTime M long Epoch timeで入力します。
ミリ秒(ms)単位で入力します。
channelId O string
characterId O string

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];
}

Contact

Gamebaseでは顧客からの問い合わせに対応するための機能を提供します。

[TIP]

NHN Cloud Contactサービスと連動して使用すると、より簡単に顧客からのお問い合わせに対応できます。 詳細なNHN Cloud Contactサービスの利用方法は以下のガイドを参照してください。 NHN Cloud Online Contact Guide

Customer Service Type

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を使用します。

  • 開発会社独自のサポート(Developer customer center)
    • サポートURLに入力したURL.
  • Gamebase提供のサポート(Gamebase customer center)
    • ログイン前:ユーザー情報がないサポートURL。
    • ログイン後:ユーザー情報が含まれたサポートURL。
  • NHN Cloud組織商品(Online Contact)
    • ログイン前:ユーザー情報がないサポートURL.
    • ログイン後:ユーザー情報が含まれたサポートURL。

Open Contact WebView

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
extraData O dictionary 開発会社が任意の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.
    }
}];

[注意]

サポートへのお問い合わせの際、ファイルを添付するために、カメラまたはアルバムへのアクセスが必要な場合があります。 info.plistに'Privacy - Camera Usage Description'、'Privacy - Photo Library Usage Description'の設定を行ってください。

Request Contact URL

サポート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.
    }
}];
TOP