iOS SDK
    • PDF

    iOS SDK

    • PDF

    Article Summary

    Classic/VPC環境で利用できます。

    iOS用ゲーム開発のための GAMEPOT iOS SDKの使用方法について説明します。 SDKをインストールして環境を構成することで、ゲームとダッシュボードを連携できます。

    システム要件

    iOS用GAMEPOT SDKを使用するためのシステム要件は、以下のとおりです。

    • 最小スペック: iOS 10.0以降
    • 開発環境: Xcode

    SDKのインストールと環境の構成

    GAMEPOT iOS SDKをインストールして環境を構成し、GAMEPOTのダッシュボードとゲームを連携してゲーム開発に必要な機能を使用できます。

    GAMEPOT SDKでサポートしている言語は以下のとおりです。

    • 英語、イタリア語、タイ語、ベトナム語、日本語、中国語(簡体/繁体)、インドネシア語、ドイツ語、スペイン語、フランス語、韓国語

    アプリ実行時にデバイスの言語によって SDK内サポート言語で表記され、サポートされていない言語は英語で表記されます。
    xcode > localizationに適用を希望する言語を追加します。

    ビルド時のバージョンコードは、整数形式でユニークに増加する方式にします。

    SDKのインストール

    GAMEPOT iOS SDKをインストールし、Xcodeでプロジェクトを構成する方法は、以下のとおりです。

    1. 管理者アカウントでダッシュボードにログインします。
    2. SDKのダウンロード > iOSメニューを順にクリックし、ダウンロードをクリックします。
    3. Xcodeを実行し、ゲームプロジェクトを開きます。
    4. ダウンロードした SDKファイルの圧縮を展開し、作成したプロジェクトのフォルダにドラッグ&ドロップします。

    Dependenciesおよび Bundle Resourceの追加

    SDKを使用するためにサービス別に適した Dependenciesおよび Bundle Resourceを Xcodeに追加するには、以下の表をご参照ください。

    ServiceFrameworkDependenciesBundle Resource
    基本(Base)AFNetworking.framework
    FirebaseAnalytics.framework
    FirebaseCore.framework
    FirebaseCoreDiagnostics.framework
    FirebaseInstanceID.framework
    FirebaseMessaging.framework
    FirebaseNanoPB.framework
    GamePot.framework
    GoogleToolboxForMac.framework
    nanopb.framework
    Protobuf.framework
    libz.tbd WebKit.framework
    UserNotifications.framework
    GamePot.bundle
    ログイン(Login)Base
    GamePotChannel.framework

    Google Sign In
    GamePotGoogleSignIn.framework
    GoogleSignIn.framework
    GoogleSignInDependencies.framework

    Facebook
    FBSDKCoreKit.framework
    FBSDKLoginKit.framework
    GamePotFacebook.framework

    LINE
    GamePotLine.framework
    LineSDK.framework
    LineSDKObjC.framework

    NAVER
    GamePotNaver.framework
    NaverThirdPartyLogin.framework

    Twitter
    GamePotTwitter.framework
    TwitterKit.framework (Dynamic Libraryで追加)
    TwitterCore.framework (Dynamic Libraryで追加)
    Google Sign In
    AuthenticationServices.framework
    LocalAuthentication.framework

    Facebook
    SafariServices.framework

    LINE
    SafariServices.framework

    Twitter
    SafariServices.framework
    Google Sign In
    GoogleSignIn.bundle
    GameCenterGamePotGameCenter.framework
    AppleIDGamePotApple.framework

    Information Property Listの追加と設定

    SDKを使用するには、Information Propertyを Xcodeに追加して設定する必要があります。

    GAMEPOT iOS SDKは Google Firebaseを使用するため、SDKの基本設定値を含む Information Property Listだけでなく、Firebaseコンソールで取得した Information Property Listをプロジェクトに一緒に追加する必要があります。

    Information Property Listを追加して設定する方法は、以下のとおりです。

    1. ダウンロードした SDKファイルに含まれた GamePotConfig-Info.plistファイルをプロジェクトに追加します。

      • そのファイルが存在しない場合は、同じ名前のファイルを作成し、キーに該当する値を入力します。
    2. Google Firebaseコンソールで取得した GoogleService-Info.plistファイルをプロジェクトに追加します。

    3. Xcodeで追加した GamePotConfig-Info.plistで以下の設定を変更します。

      • gamepot_project_id: GAMEPOTプロジェクト ID
      • gamepot_elsa_projectid: (任意) GAMEPOTログプロジェクト ID
    4. Targets > Info > Custom iOS Target Propertiesメニューを順にクリックし、以下のユーザー権限取得オプションを追加します。

      • このユーザー権限は GAMEPOTサポート内のファイルアップロード機能で使用されます。
        NSCameraUsageDescription, NSPhotoLibraryUsageDescription, NSMicrophoneUsageDescription

      • iOS 14バージョンから IDFA値を取得する際に、ユーザーから権限を取得しないと IDFA値を取得できないようになりました。 そのため、IDFA値を取得する際にユーザーから権限を取得するポップアップを使用する場合は、Targets >> Info >> Custom iOS Target Propertiesに以下のユーザー権限取得オプションを追加します。 (収集する目的と使用先についての説明が必要です)
        NSUserTrackingUsageDescription

    5. GAMEPOTダッシュボード作成リージョンがシンガポールの場合にのみ、以下の設定を追加します。

      • gamepot_region: sg
    6. GAMEPOTダッシュボード作成リージョンが日本の場合にのみ、以下の設定を追加します。

      • gamepot_license_url: https://gamepot.apigw.ntruss.com/fw/jp-v1

    Build Settingsオプションの追加

    SDKを使用するには、Xcode Build Settingsに-ObjC -lz -lstdc++ -lc++オプションを追加する必要があります。

    オプションを追加するには、Xcodeで Build Settings > Linking > Other Linker Flagsメニューを順にクリックし、-ObjC -lz -lstdc++ -lc++オプションを追加します。

    ログイン環境の設定

    アカウント別のログイン環境を設定するには、Xcodeプロジェクトに適した設定を追加する必要があります。

    Facebookログイン環境

    [Dependencies]の追加を完了すると、Facebookログイン環境を設定できます。

    Facebookログイン環境を設定する方法は、以下のとおりです。

    1. Facebook for Developersコンソールでアプリタイプを NoneConsumerGamingのいずれかにしてアプリを作成します。
    2. Facebook App ID値を Xcodeの Info > URL Typesメニューに"fb{Facebook App ID}"の形で追加します(例: fb561593141718906)。
    3. Info > iOS Target Propertyメニューを順にクリックし、LSApplicationQueriesSchemesに以下の設定を追加します。
      • fbapi, fb-messenger-share-api, fbauth2, fbshareextension, fb-messenger-api
    4. GamePotConfig-Info.plistで以下の設定を変更します。
      • gamepot_facebook_app_id: Facebook App ID
      • gamepot_facebook_display_name: Facebook display name
      • gamepot_facebook_client_token: Facebookコンソール > アプリ > 設定 > 高度な設定 > クライアントトークン

    Google Sign In、LINE、Twitter、NAVER、Apple IDログイン環境の設定

    DependenciesとBundleResourceの追加) 追加を完了すると、アカウント別のログイン環境を設定できます。

    アカウント別のログイン環境を設定するには、Xcodeプロジェクトに以下の設定を追加します。

    • Google Sign In
      • GoogleService-Info.plistファイルのREVERSED_CLIENT_ID値をコピーし、Xcodeで Info > URL Typesメニューを順にクリックして項目を追加し、URL Schemesに入力
      • GamePotConfig-Info.plistで以下の設定を変更
        gamepot_google_app_id: GoogleService-Info.plistファイルのCLIENT_ID
        gamepot_google_url_schemes: GoogleService-Info.plistファイルのREVERSED_CLIENT_ID

    • LINE
      • GamePotConfig-Info.plistで以下の設定を変更
        gamepot_line_channelid: Line Channel ID
        gamepot_line_url_schemes: Line URL Scheme (line3rdp.{プロジェクトバンドル ID})

      • Info > iOS Target Propertyメニューを順にクリックし、LSApplicationQueriesSchemesに以下の設定を追加します。
        lineauth2


    • NAVER
      • GamePotConfig-Info.plistで以下の設定を変更
        gamepot_naver_clientid: Naver Client Id
        gamepot_naver_secretid: Naver Secret Id
        gamepot_naver_urlscheme: Naver URL Scheme
      • Info > iOS Target Propertyメニューの LSApplicationQueriesSchemesに以下の設定を追加
        naversearchapp, naversearchthirdlogin, navercafe
      • Info > URL Typesメニューにgamepot_naver_urlschemeと同じ値を追加

    • Apple ID
      • Targetを選択し、Signing & Capabilitiesメニューで Sign In with Apple Capabilityを追加

    初期化

    初期化を実行するには、AppDelegateファイルで以下のコードを使用します。

    #import <GamePot/GamePot.h>
    
    #if __has_include(<AppTrackingTransparency/AppTrackingTransparency.h>)
    #import <AppTrackingTransparency/AppTrackingTransparency.h>
    #endif
    
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        ...
        // GamePot SDK Initialize
        [[GamePot getInstance] setup];
    
        // Push Permission
        if(SYSTEM_VERSION_GRATERTHAN_OR_EQUALTO(@"10.0"))
        {
            UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
            center.delegate = self;
            [center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
                if(!error){
                    dispatch_async(dispatch_get_main_queue(), ^{
                        [[UIApplication sharedApplication] registerForRemoteNotifications];
                    });
                }
            }];
        }
        else
        {
            // Code for old versions
            UIUserNotificationType allNotificationTypes = (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
            UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
            [application registerUserNotificationSettings:settings];
            [application registerForRemoteNotifications];
        }
    
    // iOS 14バージョンで IDFAの取得権限をリクエストするポップアップを呼び出す
    // プロジェクトに AppTrackingTransparency.frameworkが追加されていないと呼び出されません。
    #if __has_include(<AppTrackingTransparency/AppTrackingTransparency.h>)
       if (@available(iOS 14, *)) {
           if(NSClassFromString(@"ATTrackingManager"))
           {
               // リスナーが登録されていない場合は、リクエストポップアップが発生しません。
               [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
    
                   switch (status)
                   {
                       case ATTrackingManagerAuthorizationStatusNotDetermined:
                           break;
                       case ATTrackingManagerAuthorizationStatusRestricted:
                           break;
                       case ATTrackingManagerAuthorizationStatusDenied:
                           break;
                       case ATTrackingManagerAuthorizationStatusAuthorized:
                           break;
                       default:
                           break;
                   }
               }];
           }
       }
    #endif
        ...
    }
    
     // Push
    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
    {
        ...
        [[GamePot getInstance] handleRemoteNotificationsWithDeviceToken:deviceToken];
        ...
    }
    
    - (void)applicationWillEnterForeground:(UIApplication *)application {
        [[GamePotChat getInstance] start];
    }
    
    - (void)applicationDidEnterBackground:(UIApplication *)application {
        [[GamePotChat getInstance] stop];
    }
    

    ログインに関連する機能

    Google、Facebook、NAVERなど様々なログイン SDK機能を統合して GAMEPOT iOS SDKで使用できます。

    Twitterログインはサポートしていません。

    使用前の設定

    ログインに関連する SDK機能を使用するには、まず Appdelegateに以下のコードを追加して設定を構成します。

    // AppDelegate.m
    #import <GamePotChannel/GamePotChannel.h>
    
    // Google Loginを使用する場合
    #import <GamePotGoogleSignIn/GamePotGoogleSignIn.h>
    
    // Facebookログインを使用する場合
    #import <GamePotFacebook/GamePotFacebook.h>
    
    // AppleID Loginを使用する場合
    #import <GamePotApple/GamePotApple.h>
    
    // LINEログインを使用する場合
    #import <GamePotLine/GamePotLine.h>
    
    // Twitter Login使用時 - サポートしない
    #import <GamePotTwitter/GamePotTwitter.h>
    
    // NAVERログインを使用する場合
    #import <GamePotNaver/GamePotNaver.h>
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        ...
        // GamePotSDKチャネルを初期化。 使用するチャネル別に addChannelを使用する必要があり、Guest方式はデフォルトで含まれます。
        // Google Loginの初期化
        GamePotChannelInterface* google     = [[GamePotGoogleSignIn alloc] init];
        [[GamePotChannelManager getInstance] addChannelWithType:GOOGLE interface:google];
    
        // Facebookログインの初期化
        GamePotChannelInterface* facebook   = [[GamePotFacebook alloc] init];
        [[GamePotChannelManager getInstance] addChannelWithType:FACEBOOK interface:facebook];
    
        // AppleIDログインの初期化
        GamePotChannelInterface* apple      = [[GamePotApple alloc] init];
        [[GamePotChannel getInstance] addChannelWithType:APPLE interface:apple];
    
        // LINEログインの初期化
        GamePotChannelInterface* line = [[GamePotLine alloc] init];
        [[GamePotChannel getInstance] addChannelWithType:LINE interface:line];
    
        // Twitterログインの初期化 - サポートしない
        GamePotChannelInterface* twitter = [[GamePotTwitter alloc] init];
        [[GamePotChannel getInstance] addChannelWithType:TWITTER interface:twitter];
    
          // NAVERログインの初期化
          GamePotChannelInterface* naver = [[GamePotNaver alloc] init];
          [[GamePotChannel getInstance] addChannelWithType:NAVER interface:naver];
    
        // ログイン処理のために必要です。
        [[GamePotChannel getInstance] application:application didFinishLaunchingWithOptions:launchOptions];
    
        ...
    }
    
    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
    {
        // ログイン処理のために必要です。
        BOOL nChannelResult = [[GamePotChannel getInstance] application:app openURL:url options:options];
        return nChannelResult;
    }
    

    ログイン機能

    開発会社で実装したログイン UIにより、ログインボタンをクリックしたときに動作する SDKログイン機能を使用するには、以下のコードを使用します。

    #import <GamePotChannel/GamePotChannel.h>
    // ログインタイプの定義
    // GamePotChannelType.GOOGLE
    // GamePotChannelType.FACEBOOK
    // GamePotChannelType.GUEST
    // GamePotChannelType.LINE
    // GamePotChannelType.TWITTER - サポートしない
    // GamePotChannelType.NAVER
    // GamePotChannelType.APPLE
    
    // Googleログインボタンのクリック時に呼び出し
    [[GamePotChannel getInstance] Login:GOOGLE viewController:self success:^(GamePotUserInfo* userInfo) {
        // ログイン完了
    } cancel:^{
        // ログイン中にユーザーがキャンセル
    } fail:^(NSError *error) {
        // ログイン中にエラー発生
        // TODO: ゲームポップアップで失敗原因に関するメッセージを表示します。
        // TODO: メッセージは[error localizedDescription]を使用してください。
    }];
    

    自動ログイン機能

    会員の最後のログイン情報を伝達する APIで自動ログイン機能を使用するには、以下のコードを使用します。

    #import <GamePotChannel/GamePotChannel.h>
    
    // lastLoginType: 最後のログイン値をインポートします。
    GamePotChannelType type = [[GamePotChannel getInstance] lastLoginType];
    
    if(type != NONE)
    {
        // 最後にログインしたログインタイプでログインする方式です。
        // 自動ログイン処理を行う際は、以下のように呼び出します。
        [[GamePotChannel getInstance] Login:type viewController:self success:^(GamePotUserInfo* userInfo) {
    
        } cancel:^{
    
        } fail:^(NSError *error) {
            // ゲームポップアップで失敗原因に関するメッセージを表示します。
            // メッセージは[error localizedDescription]を使用してください。
        }];
    }
    else
    {
        // 最後にログインした情報がない。 ログインボタンがあるログイン画面に移動
    }
    

    ログアウト機能

    ログアウト機能を使用するには、以下のコードを使用します。

    #import <GamePotChannel/GamePotChannel.h>
    
    [[GamePotChannel getInstance] LogoutWithSuccess:^{
        // ログアウトが完了すると初期画面に移動します。
    } fail:^(NSError *error) {
        // ログアウトに失敗。 ゲームポップアップで失敗原因に関するメッセージを表示します。
        // メッセージは[error localizedDescription]を使用してください。
    }];
    
    

    会員退会機能

    会員退会機能を使用するには、以下のコードを使用します。

    #import <GamePotChannel/GamePotChannel.h>
    
    [[GamePotChannel getInstance] DeleteMemberWithSuccess:^{
        // 会員退会に成功。 ログイン画面に移動します。
    } fail:^(NSError *error) {
        // 会員退会に失敗。 ゲームポップアップで失敗原因に関するメッセージを表示します。
        // メッセージは[error localizedDescription]を使用してください。
    }];
    

    ログイン検証機能

    ログイン完了後、ログイン情報を開発会社のサーバから GAMEPOTサーバに伝達してログイン検証を行えます。

    詳細は、ログイン検証リクエストをご参照ください。

    外部アカウントとの連携

    一つのゲームアカウントに複数の外部アカウントを連携したり、解除できます。

    アカウント連携機能

    Google、Facebook、NAVERなど様々な外部アカウントとの連携機能を使用するには、以下のコードを使用します。

    #import <GamePotChannel/GamePotChannel.h>
    
    // タイプの定義
    // GamePotChannelType.GOOGLE
    // GamePotChannelType.FACEBOOK
    // GamePotChannelType.LINE
    // GamePotChannelType.TWITTER
    // GamePotChannelType.NAVER
    // GamePotChannelType.APPLE
    
    [[GamePotChannel getInstance] CreateLinking:GOOGLE viewController:self success:^(GamePotUserInfo *userInfo) {
        // 連携完了。 ゲームポップアップで連携結果に関するメッセージを表示します(例: アカウントの連携に成功しました)。
    } cancel:^{
        // ユーザーがキャンセル
    } fail:^(NSError *error) {
        // 連携失敗。 ゲームポップアップで失敗原因に関するメッセージを表示します。
        // メッセージは[error localizedDescription]を使用してください。
    }];
    
    

    連携リスト確認機能

    アカウントに連携された外部アカウントリストを確認するには、以下のコードを使用します。

    #import <GamePotChannel/GamePotChannel.h>
    
    // タイプの定義
    // GamePotChannelType.GOOGLE
    // GamePotChannelType.FACEBOOK
    // GamePotChannelType.LINE
    // GamePotChannelType.TWITTER
    // GamePotChannelType.NAVER
    // GamePotChannelType.APPLE
    
    // タイプによる連携結果を返却します。
    BOOL isGoogleLinked = [[GamePotChannel getInstance] isLinked:GOOGLE];
    
    // 連携されているタイプに対して JsonString形式で返却します。
    NSString* linkedList = [[GamePotChannel getInstance] getLinkedListJsonString];
    
    

    連携解除機能

    外部アカウントとの連携解除機能を使用するには、以下のコードを使用します。

    #import <GamePotChannel/GamePotChannel.h>
    
    [[GamePotChannel getInstance] DeleteLinking:GOOGLE success:^{
         // 解除完了。 ゲームポップアップで連携結果に関するメッセージを表示します(例: アカウントの連携を解除しました)。
    } fail:^(NSError *error) {
         // 解除失敗。 ゲームポップアップで失敗原因に関するメッセージを表示します。
         // メッセージは[error localizedDescription]を使用してください。
    }];
    

    決済機能

    In-App購入のための決済機能を使用できます。 決済の結果値は Delegateの形で実装されます。

    AppDelegateの設定

    決済機能を使用するために AppDelegateを設定するには、以下のコードを使用します。

    #import <GamePot/GamePot.h>
    
    @interface ViewController () <GamePotPurchaseDelegate>
    @end
    @implementation ViewController
    
    - (void)viewDidLoad
    {
        ...
        [[GamePot getInstance] setPurchaseDelegate:self];
        ...
    }
    
    - (void)GamePotPurchaseSuccess:(GamePotPurchaseInfo *)_info
    {
        // 決済成功
    }
    
    - (void)GamePotPurchaseFail:(NSError *)_error
    {
        // 決済エラー。 ゲームポップアップで失敗原因に関するメッセージを表示します。
        // メッセージは[error localizedDescription]を使用してください。
    }
    
    - (void)GamePotPurchaseCancel
    {
        // 決済試行中にキャンセル
        // 「決済がキャンセルされました。」 というメッセージを、ゲームポップアップで表示します。
    }
    @end
    

    決済試行機能

    決済試行機能を使用するには、以下のコードを使用します。

    • 一般決済の実行
    #import <GamePot/GamePot.h>
    
    // productid: ストアに登録されている商品 IDを入力
    [[GamePot getInstance] purchase:productid];
    
    


    • 決済試行および領収証番号を別途管理する
    #import <GamePot/GamePot.h>
    
    // productId: ストアに登録されている商品 IDを入力
    // uniqueId: 別途管理する領収証番号を入力
    [[GamePot getInstance] purchase:productid uniqueId:uniqueid];
    


    • 決済試行、領収証番号を別途管理、キャラクター情報を Webフックに伝達
    #import <GamePot/GamePot.h>
    
    // productId: ストアに登録されている商品 ID
    // uniqueId: 別途管理する領収証番号
    // serverId: 決済を行ったキャラクターのサーバ ID
    // playerId: 決済を行ったキャラクターのキャラクター ID
    // etc       : 決済を行ったキャラクターのその他の情報
    [[GamePot getInstance] purchase:productid uniqueId:uniqueid serverId:serverid playerId:playerid etc:etc]];
    

    決済アイテムリストの取得機能

    ストアに伝達する In-App決済アイテムリストの取得機能を使用するには、以下のコードを使用します。

    [case1]
    NSArray<SKProduct*>* itemList = [[GamePot getInstance] getDetails];
    
    // デバイスの通貨設定による価格を読み込む場合
    [[GamePot getInstance] getLocalizePrice:[product productIdentifier]];
    
    [case2]
    
    [[GamePot getInstance] getPurchaseItemsJsonString];
    
    
    [case3]
    
    @try{
        [[GamePot getInstance] getPurchaseDetailListAsyncToJSON:^(BOOL _success, NSString *_items, NSError *_error)
        {
            if(_success)
            {
                if(_items)
                {
                    // In-app information
                }
            }else
            {
                if(_error){
                    // NSLog(@"Error = %@", [_error localizedDescription]);
                }
            }
        }];
    }
    @catch(NSException* ex){
        NSLog(@"Error : %@", ex);
    }
    
    

    決済アイテムの支給機能

    決済ストアの領収書の内訳と対照して検証をすべて完了した場合のみ、開発会社のサーバに支給リクエストを転送するように設定できます。

    詳細は、アイテム支給のリクエストをご参照ください。

    SDK独自提供のログイン UI

    GAMEPOT iOS SDKが提供する完成された形のログイン UIを使用できます。

    AppDelegateの設定

    独自提供のログイン UIを使用するために AppDelegateを設定するには、以下のコードを使用します。

    #import <GamePot/GamePot.h>
    #import <GamePotChannel/GamePotChannel.h>
    
    NSArray* order = @[@(GOOGLE), @(FACEBOOK), @(APPLE),@(NAVER), @(LINE), @(TWITTER), @(GUEST)];
    GamePotChannelLoginOption* options = [[GamePotChannelLoginOption alloc] init:order];
    [option setShowLogo:YES];
    
    [[GamePotChannel getInstance] showLoginWithUI:self option:options success:^(GamePotUserInfo *userInfo) {
        // ログイン完了。 ゲームのロジックに合わせて処理します。
                
    } update:^(GamePotAppStatus *appStatus) {
            // 強制アップデートが必要。 以下の APIを呼び出すと、SDK独自のポップアップを表示できます。
            // カスタマイズしたい場合は、以下の APIを呼び出していない状態でカスタマイズします。
            [[GamePot getInstance] showAppStatusPopup:self setAppStatus:appStatus
             setCloseHandler:^{
                // showAppStatusPopup APIを呼び出した場合、アプリを終了しなければならない状況で呼び出されます。
                // 終了プロセスを処理します。
            } setNextHandler:^(NSObject* resultPayload) {
                // ダッシュボードアップデートの設定で推奨を選択すると、「後でする」ボタンが表示されます。
                // そのボタンをユーザーが選択すると呼び出されます。
                // resultPayload情報を用いてログイン完了時と同様に処理します。
                // GamePotUserInfo* userInfo = (GamePotUserInfo*)resultPayload;
    
            }];
        } maintenance:^(GamePotAppStatus *appStatus) {
              // メンテナンス中。 以下の APIを呼び出すと、SDK独自のポップアップを表示できます。
            // カスタマイズしたい場合は、以下の APIを呼び出していない状態でカスタマイズします。
            [[GamePot getInstance] showAppStatusPopup:self setAppStatus:appStatus
             setCloseHandler:^{
                // showAppStatusPopup APIを呼び出した場合、アプリを終了しなければならない状況で呼び出されます。
                // 終了プロセスを処理します。
            }];
        } exit:^{
        // Xボタンのクリック時に処理
    }];
    

    独自提供のログイン UI画像ロゴの設定

    独自提供のログイン UI上部に表示される画像を設定できます。 別途設定しない場合は、SDKに含まれている基本画像を使用し、ゲームに合った画像を直接設定できます。 推奨画像サイズは310x220です。

    独自提供のログイン UI画像を設定するには、設定する画像のファイル名を ic_stat_gamepot_login_logo.pngに変更し、GamePot.bundle内に存在する同じ名前の従来のファイルと取り替えます。

    クーポン機能

    ユーザーがクーポンを入力すると使用処理する機能を使うには、以下のコードを使用します。

    #import <GamePot/GamePot.h>
    
    [[GamePot getInstance] coupon: /*ユーザーが入力したクーポン*/ handler:^(BOOL _success, NSError *_error) {
        if(_success)
        {
            // messageにクーポン使用に関する結果が返却されます。 ゲームポップアップにこのメッセージを表示します。
        }
        else
        {
            // _errorにクーポン使用の失敗原因に関する情報が返却されます。
            // [_error localizedDescription]の内容をゲームポップアップで表示してください。
        }
    }];
    

    アイテムの支給

    クーポン使用に成功すると、開発会社のサーバにアイテム支給をリクエストします。

    詳細は、アイテム支給のリクエストをご参照ください。

    プッシュ通知機能

    一般プッシュ通知、夜間プッシュ通知、広告型プッシュの通知機能を有効化または無効化し、ローカルプッシュ通知機能を使用できます。
    広告型プッシュ設定は、プッシュ機能を使用する場合に YESにしてください。(広告型プッシュの値が NOの場合、一般/夜間プッシュの設定に関係なくプッシュが届きません)

    プッシュ通知の有効化および無効化

    プッシュ通知機能を使用するには、以下のコードを使用します。

    #import <GamePot/GamePot.h>
    
    // プッシュ通知 On/Off
    [[GamePot getInstance] setPushEnable:YES success:^{
    
    } fail:^(NSError *error) {
    
    }];
    
    // 夜間プッシュ通知 On/Off
    [[GamePot getInstance] setNightPushEnable:YES success:^{
    
    } fail:^(NSError *error) {
    
    }];
    
    // プッシュ/夜間プッシュ通知を一度に設定
    // ログイン前にプッシュ/夜間プッシュ通知を許可するかどうかを取得するゲームの場合は、ログインの後に以下のコードを必ず呼び出します。
    [[GamePot getInstance] setPushStatus:YES night:YES ad:YES success:^{
        <#code#>
    } fail:^(NSError *error) {
        <#code#>
    }];
    

    画像プッシュ通知機能

    iOSアプリで通知画像を受信して処理できるように通知サービス拡張プログラムを追加する方法は、以下のとおりです。

    1. Xcodeで Targetメニューをクリックし、Notification Service Extensionを選択して Nextをクリックします。
    2. Project Nameを入力し、Finishをクリックします。
    3. 作成された Notification Service Extensionモジュールの NotificationService.hファイルを以下のように編集します。
      // GamePot/GamePotNotificationServiceExtension.hを Import
      // #import <UserNotifications/UserNotifications.h>
      #import <GamePot/GamePotNotificationServiceExtension.h>
      
      // UNNotificationServiceExtensionの代わりに GamePotNotificationServiceExtensionを継承
      // @interface NotificationService : UNNotificationServiceExtension
      @interface NotificationService : GamePotNotificationServiceExtension
      @end
      
    4. 作成された Notification Service Extensionモジュールの NotificationService.mファイルを以下のように編集します。
      ...
      - (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
          // self.contentHandler = contentHandler;
          // self.bestAttemptContent = [request.content mutableCopy];
      
          // Modify the notification content here...
          // self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]", self.bestAttemptContent.title];
      
          // self.contentHandler(self.bestAttemptContent);
          [super didReceiveNotificationRequest:request withContentHandler:contentHandler];
      }
      ...
      
    5. 作成された Notification Service Extensionモジュールで Targets > Build Phases > Link Binary With Librariesメニューを順にクリックし、GamePot.frameworkを追加します。

    ローカルプッシュ通知機能

    プッシュメッセージサーバを介さずにデバイスで独自にプッシュ通知を表示できます。

    プッシュ通知を登録して所定時間にローカルプッシュ通知が表示されるようにするには、以下のコードを使用します。

     NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
     [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    
     NSString* strDate = [formatter stringFromDate:[[NSDate date] dateByAddingTimeInterval:30]];
    
     int pushId  = [[GamePot getInstance] sendLocalPush:@"Title" setMessage:@"Message" setDateString:strDate];
    /* pushidの return値は開発会社で管理 */
    

    登録したローカルプッシュ通知のキャンセル

    ローカルプッシュ通知を登録する際に取得したpushid値を使って既に登録されているプッシュ通知をキャンセルするには、以下のコードを使用します。

    [[GamePot getInstance] cancelLocalPush:(int)pushId];
    

    お知らせの画像表示機能

    ダッシュボードのお知らせメニューにアップロードした画像が表示されるように設定できます。 推奨画像サイズは、以下のとおりです。

    • サイズ: 720x1200(Portrait)、1280x640(Landscape)
    • 容量: 250KB以下

    ダッシュボードのお知らせメニューにアップロードした画像が表示されるようにするには、以下のコードを使用します。

    [[GamePot getInstance] showNotice:/*viewController*/ setSchemeHandler:^(NSString *scheme) {
        NSLog(@"scheme = %@", scheme);
    }];
    

    特定分類のお知らせの画像のみ表示

    特定分類のお知らせの画像のみ表示されるようにするには、以下のコードを使用します。

    [[GamePot getInstance] showEvent:/*viewController*/ setType:/*Type*/ setSchemeHandler:^(NSString *scheme) {
        NSLog(@"scheme = %@", scheme);
    }];
    

    カスタマーサポート機能

    ダッシュボードと連携し、問い合わせ、ポリシーおよび規約 UIの呼び出し、同意の収集などの機能を使用できます。

    問い合わせ機能

    会員が問い合わせを送信すると、担当者が返答できる問い合わせ機能を使用できます。 ダッシュボードのサポート > お問い合わせメニューと連携されます。

    問い合わせ UIは、デバイスの言語に応じて韓国語、英語、日本語、中国語体字および繁体字のうち一つの言語に変更されます。その他のデバイスの言語の場合は、英語に変更されます。

    ダッシュボードと連携して問い合わせ機能を使用するには、以下のコードを使用します。

    [[GamePot getInstance] showHelpWebView:(UIViewController *)];
    

    外部リンクの問い合わせ

    外部リンクでログインしていない顧客も問い合わせを登録できるようにするには、以下のコードを使用します。

    // showWebView Type
        // WEBVIEW_NORMAL // 戻るボタンなし
        // WEBVIEW_NORMALWITHBACK // 戻るボタンあり
    
        [[GamePot getInstance] showWebView:/*現在の ViewController*/ setType:/*Type*/ setURL:/*外部問い合わせアクセス URL*/];
    

    規約およびポリシー UIの呼び出し機能

    ダッシュボードのサポートメニューで作成した各種規約やポリシーを UIで呼び出しできます。

    規約およびポリシー UIを呼び出すには、以下のコードを使用します。

    • 利用規約

      #import <GamePot/GamePot.h>
      
      [[GamePot getInstance] showTerms:/*ViewController*/];
      
    • 個人情報の取扱方針

      #import <GamePot/GamePot.h>
      
      [[GamePot getInstance] showPrivacy:/*ViewController*/];
      
    • 払い戻しポリシー

      #import <GamePot/GamePot.h>
      
      [[GamePot getInstance] showRefund:/*ViewController*/];
      

    規約同意機能(GDPRを含む)

    提供されるポップアップ UI機能を使用し、ダッシュボードで作成した各種ポリシーや規約への同意を収集できます。 GDPRポリシーへの同意も収集できます。

    規約同意の自動呼び出し

    GAMEPOT iOS SDKバージョン v3.3.0以降を使用する場合は、会員がログインする際に自動的に規約同意のポップアップが表示されます。

    ログインの際に規約同意を自動的に呼び出すかどうかを変更するには、以下のコードを使用します。

    // Default Valueは YES
    // 自動ポップアップ時、MATERIAL_BLUEテーマを適用
    // falseに設定すると、ログインの際に規約同意のポップアップが表示されません。
    [[GamePot getInstance] setAutoAgree:YES];
    
    // MATERIAL_ORANGEテーマをカスタム適用時
    GamePotAgreeOption* options = [[GamePotAgreeOption alloc] init:MATERIAL_ORANGE];
    [[GamePot getInstance] setAgreeBuilder:options];
    
    ...
    
    [[GamePotChannel getInstance] Login:GamePotChannelType viewController:self success:^(GamePotUserInfo* userInfo) {
    
    } cancel:^{
    
    } fail:^(NSError *error) {
    
    } update:^(GamePotAppStatus *appStatus) {
    
    } maintenance:^(GamePotAppStatus *appStatus) {
    
    }];
    
    ...
    

    規約同意の手動呼び出し

    規約同意の呼び出しを手動で行うには、以下のコードを使用します。

    • テーマの選択

      // 基本テーマ
      [[GamePotAgreeOption alloc] init:BLUE];
      [[GamePotAgreeOption alloc] init:GREEN];
      
      // 改善テーマ  
      //  [[GamePotAgreeOption alloc] init:MATERIAL_RED];
      //  [[GamePotAgreeOption alloc] init:MATERIAL_BLUE];
      //  [[GamePotAgreeOption alloc] init:MATERIAL_CYAN];
      //  [[GamePotAgreeOption alloc] init:MATERIAL_ORANGE];
      //  [[GamePotAgreeOption alloc] init:MATERIAL_PURPLE];
      //  [[GamePotAgreeOption alloc] init:MATERIAL_DARKBLUE];
      //  [[GamePotAgreeOption alloc] init:MATERIAL_YELLOW];
      //  [[GamePotAgreeOption alloc] init:MATERIAL_GRAPE];
      //  [[GamePotAgreeOption alloc] init:MATERIAL_GRAY];
      //  [[GamePotAgreeOption alloc] init:MATERIAL_GREEN];
      //  [[GamePotAgreeOption alloc] init:MATERIAL_PEACH];
      
    • 呼び出し

      GamePotAgreeOption* option = [[GamePotAgreeOption alloc] init:MATERIAL_BLUE];
      [[GamePot getInstance] showAgreeView:self option:option handler:^(GamePotAgreeInfo *result) {
         // [result agree]: 規約の必須事項にすべて同意した場合、true
         // [result agreePush]: 一般プッシュ型広告の通知を許可した場合は true、そうでない場合は false
         // [result agreeNight]: 夜間プッシュ型広告の通知を許可した場合は true、そうでない場合は false
         // agreePush / agreeNight値はログインを完了してから setPushEnable APIを通じて一度に設定してください。
      }];
      

    規約同意 UIテーマの直接構成

    SDKで提供するテーマを使う代わりに、直接構成した規約同意 UIのテーマを使用できます。

    規約同意 UIのテーマを直接構成して使用するには、規約同意を呼び出す前に、以下のコードを使ってテーマを構成します。

    • 規約自動呼び出しの際、ポップアップのカスタマイズ設定
    GamePotAgreeOption* options = [[GamePotAgreeOption alloc] init:MATERIAL_BLUE];
    
    [[GamePot getInstance] setAgreeBuilder:options];
    
    • 詳細設定
    GamePotAgreeOption* option = [[GamePotAgreeOption alloc] init:MATERIAL_BLUE];
    
    [option setHeaderBackGradient:@[@0xFF00050B,@0xFF0F1B21]];
    [option setHeaderTitleColor:0xFF042941];
    [option setContentBackGradient:@[@0xFF112432,@0xFF112432]];
    [option setContentIconColor:0xFF042941];
    [option setContentCheckColor:0xFF91adb5];
    [option setContentTitleColor:0xFF98b3c6];
    [option setContentShowColor:0xFF98b3c6];
    [option setFooterBackGradient:@[@0xFF112432,@0xFF112432]];
    [option setFooterButtonGradient:@[@0xFF1E3A57,@0xFF57B2E2]];
    [option setFooterButtonOutlineColor:0xFF0b171a];
    [option setFooterTitleColor:0xFFFFFFD5];
    
    // 文言を変更
    [option setAllMessage:@"すべて同意"];
    [option setTermMessage:@"必須) 利用規約"];
    [option setPrivacyMessage:@"必須) 個人情報の取扱方針"];
    [option setPushMessage:@"任意) 一般プッシュ通知を許可"];
    [option setNightPushMessage:@"任意) 夜間プッシュ通知を許可"];
    [option setFooterTitle:@"ゲームを始める"];
    
    // プッシュ型広告の通知許可(一般/夜間)にチェックを入れた場合、ゲームを始める際の Toastメッセージ(同意時間)表示の有無
    [option setShowToastPushStatus:YES];
    
    // プッシュ型広告の通知許可(一般/夜間)メッセージの編集
    [option setPushToastMsg:@"Push on"];
    [option setNightPushToastMsg:@"Night Push on"];
    // 未使用時は@""に設定
    [option setHeaderTitle:@"規約同意"];
    
    // 一般プッシュ型広告通知許可ボタンの表示の有無
    [option setShowPush:YES];
    
    // 夜間プッシュ型広告通知許可ボタンの表示の有無
    [option setShowNightPush:YES];
    
    // 一般プッシュ型広告通知許可リンクの設定(使用しない場合、設定しない)
    [option setPushDetailURL:@"https://..."];
    
    // 夜間プッシュ型広告通知許可リンクの設定(使用しない場合、設定しない)
    [option setNightPushDetailURL:@"https://..."];
    
    
      [[GamePot getInstance] showAgreeView:self option:option handler:^(GamePotAgreeInfo *result) {
           .......
      }];
    
    
    • それぞれの変数は、以下の画像に表示された領域に適用されます。
      • AgeView
        gamepot_android_09_ko1
      • EmailView
        gamepot_android_09_1_ko
      • AgreeView
        gamepot_android_09_2_ko

    GDPR規約チェックリスト機能

    ダッシュボードで有効化した GDPRの規約項目をリストの形で取得するには、以下のコードを使用します。

    (NSArray*) [[GamePot getInstance] getGDPRCheckedList];
    
    //返される各パラメータは、ダッシュボードの以下の設定に該当します。
    gdpr_privacy: 個人情報の取扱方針
    gdpr_term: 利用規約
    gdpr_gdpr: GDPRの利用規約
    gdpr_push_normal: イベントプッシュ受信に同意
    gdpr_push_night: 夜間イベントプッシュ受信に同意(韓国のみ対象)
    gdpr_adapp_custom: パーソナライズド広告を見るに同意 (GDPR適用国)
    gdpr_adapp_nocustom: 非パーソナライズド広告を見るに同意 (GDPR適用国)
    

    メンテナンスおよび強制アップデート機能

    ゲームのメンテナンスおよび強制アップデート機能を使用できます。 ダッシュボードのメンテナンス&アップデートメニューで各機能を有効にすると動作します。

    メンテナンスおよび強制アップデート機能を使用するには、以下のコードを使用します。

    [[GamePotChannel getInstance] Login:GAMECENTER viewController:self
        success:^(GamePotUserInfo* userInfo) {
                // ログイン完了。 ゲームのロジックに合わせて処理します。
        } cancel:^{
                // ユーザーがログインをキャンセル
        } fail:^(NSError *error) {
                // ログインに失敗。 [error localizedDescription]を用いてエラーメッセージを表示してください。
        } update:^(GamePotAppStatus *appStatus) {
            // 強制アップデートが必要。 以下の APIを呼び出すと、SDK独自のポップアップを表示できます。
            // カスタマイズしたい場合は、以下の APIを呼び出していない状態でカスタマイズします。
            [[GamePot getInstance] showAppStatusPopup:self setAppStatus:appStatus
             setCloseHandler:^{
                // showAppStatusPopup APIを呼び出した場合、アプリを終了しなければならない状況で呼び出されます。
                // 終了プロセスを処理します。
            } setNextHandler:^(NSObject* resultPayload) {
                // ダッシュボードアップデートの設定で推奨を選択すると、「後でする」ボタンが表示されます。
                // そのボタンをユーザーが選択すると呼び出されます。
                // resultPayload情報を用いてログイン完了時と同様に処理します。
                // GamePotUserInfo* userInfo = (GamePotUserInfo*)resultPayload;
    
            }];
        } maintenance:^(GamePotAppStatus *appStatus) {
              // メンテナンス中。 以下の APIを呼び出すと、SDK独自のポップアップを表示できます。
              // カスタマイズしたい場合は、以下の APIを呼び出していない状態でカスタマイズします。
            [[GamePot getInstance] showAppStatusPopup:self setAppStatus:appStatus
             setCloseHandler:^{
                // TODO: showAppStatusPopup APIを呼び出したアプリを終了しなければならない状況で呼び出されます。
                // TODO: 終了プロセスを処理します。
            }];
        }];
    

    Remote Config機能

    ダッシュボードのゲーム > Remote Configメニューに登録したサーバのパラメータ値を取得できます。 パラメータ値を取得して SDKで使用すると、ゲームをアップデートせずに各要素を変更または制御できます。

    取得したパラメータはログイン時にロードされ、その後から呼び出すことができます。

    Remote Config機能を使用するには、以下のコードを使用します。

    #import <GamePot/GamePot.h>
    
    //key: パラメータ string
    NSString *str_value = [[GamePot getInstance] getConfig:(NSString*)key];
    
    //ダッシュボードに追加したすべてのパラメータを json形式で取得します。
    NSArray *json_value = [[GamePot getInstance] getConfigs];
    

    ゲームログの転送機能

    ゲームログを呼び出してダッシュボードのゲーム > プレイヤーメニューで確認できます。

    ゲームログの転送機能を使用するには、表を参照して以下のコードに予約語を入力し、コードを呼び出します。

    • 予約語およびコード
      予約語必須タイプ説明最大長さ
      GamePotSendLogCharacter.NAME必須Stringキャラクター名128
      GamePotSendLogCharacter.LEVEL任意Stringレベル128
      GamePotSendLogCharacter.SERVER_ID任意Stringサーバ ID128
      GamePotSendLogCharacter.PLAYER_ID任意Stringキャラクター ID128
      GamePotSendLogCharacter.USERDATA任意StringETC128
      #import <GamePot/GamePotSendLog.h>
      #import <GamePot/GamePotSendLogCharacter.h>
      
      GamePotSendLogCharacter* info = [[GamePotSendLogCharacter alloc] init];
      
      [info put:@"name" forKey:GAMEPOT_NAME];
      [info put:@"playerid" forKey:GAMEPOT_PLAYER_ID];
      [info put:@"serverid" forKey:GAMEPOT_SERVER_ID];
      [info put:@"level" forKey:GAMEPOT_LEVEL];
      [info put:@"userdata" forKey:GAMEPOT_USERDATA];
      
      BOOL result = [GamePotSendLog characterInfo:info];
      
      // 結果値 true: 検証に成功。 ログが GAMEPOTサーバに転送されます。
      // 結果値 false: 検証に失敗。logcatを確認します。
      

    AppStatusの確認

    現在クライアントの AppStatusを確認するには、以下のコードを使用します。 (ログイン前のメンテナンス / アップデートの状態確認)

    #import <GamePot/GamePot.h>
    
    [[GamePot getInstance] checkAppStatus:^{
        
        //Login Success
    
    } setFailHandler:^(NSError *error) {
    
        //Failed
    
    } setUpdateHandler:^(GamePotAppStatus *status) {
    
        //NeedUpdate
         // 強制アップデートが必要。 以下の APIを呼び出すと、SDK独自のポップアップを表示できます。
        // カスタマイズしたい場合は、以下の APIを呼び出していない状態でカスタマイズします。
        [[GamePot getInstance] showAppStatusPopup:self setAppStatus:status
         setCloseHandler:^{
            // showAppStatusPopup APIを呼び出した場合、アプリを終了しなければならない状況で呼び出されます。
            // 終了プロセスを処理します。
        } setNextHandler:^(NSObject* resultPayload) {
            // ダッシュボードアップデートの設定で推奨を選択すると、「後でする」ボタンが表示されます。
            // そのボタンをユーザーが選択すると呼び出されます。
            // resultPayload情報を用いてログイン完了時と同様に処理します。
            // GamePotUserInfo* userInfo = (GamePotUserInfo*)resultPayload;
    
        }];
    
    } setMaintenanceHandler:^(GamePotAppStatus *status) {
    
        //OnMaintenance
        // メンテナンス中。 以下の APIを呼び出すと、SDK独自のポップアップを表示できます。
          // カスタマイズしたい場合は、以下の APIを呼び出していない状態でカスタマイズします。
        [[GamePot getInstance] showAppStatusPopup:self setAppStatus:appStatus
         setCloseHandler:^{
            // TODO: showAppStatusPopup APIを呼び出したアプリを終了しなければならない状況で呼び出されます。
            // TODO: 終了プロセスを処理します。
        }];
    
    }];
    

    setUserDataの設定

    ログイン後、当該会員に追加情報を入れる場合に使用します。
    キーの最大数は50個に制限
    値の最大長さは1024バイトに制限
    これらの情報は会員の詳細項目でのみ確認できます。

    #import <GamePot/GamePot.h>
    
    NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:
                            @"1.0.23",@"appversion",
                            @"s1",@"server"];
                            
    [[GamePot getInstance] setUserData:dict handler:^(BOOL _success, NSError *_error) {
        if(_success)
        {
            //setUserDataに成功
        }
        else
        {
             //setUserDataに失敗
        }
    }];
    

    3rd Party SDK連携

    GAMEPOT iOS SDKは、3rd Party SDKとの連携に対応しています。

    3rd Party SDKログイン連携

    3rd Party SDKと連携してログイン機能を使用するには、表を参照して以下のコードにパラメータ値を入力し、コードを使用します。

    • パラメータおよびコード
      パラメータ名必須タイプ説明
      viewController必須UIViewController現在の ViewController
      userid必須NSStringユーザーの固有 ID
      success必須String成功した場合のコールバック
      fail必須String失敗した場合のコールバック
      update任意Stringアップデート機能が動作した場合のコールバック
      maintenance任意Stringメンテナンス機能が動作した場合のコールバック
      NSString userid = @"memberid of 3rd party sdk";
      
      [[GamePotChannel getInstance] loginByThirdPartySDK:self uId:userid success:^(GamePotUserInfo* userInfo) {
          // ログイン完了。 ゲームのロジックに合わせて処理します。
      } cancel:^{
          // ユーザーがログインをキャンセル
      } fail:^(NSError *error) {
          // ログインに失敗。 [error localizedDescription]を用いてエラーメッセージを表示してください。
      } update:^(GamePotAppStatus *appStatus) {
          // 強制アップデートが必要。 以下の APIを呼び出すと、SDK独自のポップアップを表示できます。
          // カスタマイズしたい場合は、以下の APIを呼び出していない状態でカスタマイズします。
          [[GamePot getInstance] showAppStatusPopup:self setAppStatus:appStatus
              setCloseHandler:^{
              // showAppStatusPopup APIを呼び出した場合、アプリを終了しなければならない状況で呼び出されます。
              // 終了プロセスを処理します。
          } setNextHandler:^(NSObject* resultPayload) {
              // ダッシュボードアップデートの設定で推奨を選択すると、「後でする」ボタンが表示されます。
              // そのボタンをユーザーが選択すると呼び出されます。
              // resultPayload情報を用いてログイン完了時と同様に処理します。
              // GamePotUserInfo* userInfo = (GamePotUserInfo*)resultPayload;
      
          }];
      } maintenance:^(GamePotAppStatus *appStatus) {
          // メンテナンス中。 以下の APIを呼び出すと、SDK独自のポップアップを表示できます。
          // メンテナンス中。 以下の APIを呼び出すと、SDK独自のポップアップを表示できます。
          [[GamePot getInstance] showAppStatusPopup:self setAppStatus:appStatus
              setCloseHandler:^{
              // showAppStatusPopup APIを呼び出した場合、アプリを終了しなければならない状況で呼び出されます。
              // 終了プロセスを処理します。
          }];
      }];
      

    3rd Party SDK決済連携

    3rd Party SDKと連携して決済機能を使用するには、表を参照して以下のコードにパラメータ値を入力し、コードを使用します。

    • パラメータおよびコード
      パラメータ名必須タイプ説明
      productid必須NSStringダッシュボードに登録されているアイテム ID
      transactionid必須NSString決済領収証番号(GPA-xxx-xxxx-xxxx)
      currency任意NSString通貨(KRW、USD)
      price任意NSDecimalNumber決済アイテム金額
      paymentid任意NSString決済ストア(apple)
      success任意GamePotCommonSuccess成功した場合のコールバック
      fail任意GamePotCommonFail失敗した場合のコールバック
      NSString* productId = @"purchase_001";
      NSString* transactionId = @"xxxxxxxxxxx";
      NSString* currency = @"USD";
      NSDecimalNumber* price = [[NSDecimalNumber alloc] initWithString:@"1.09"];
      NSString* paymentId = "apple";
      NSString* uniqueId = "developer unique id";
      
      [[GamePot getInstance] sendPurchaseByThirdPartySDK:productId transactionId:transactionId currency:currency price:price paymentId:paymentId uniqueId:uniqueId success:^{
          // success
      } fail:^(NSError *error) {
          // fail
      }];
      

    この記事は役に立ちましたか?

    What's Next
    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.