Unity SDK

Prev Next

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

Unityにて、GAMEPOT Unity SDKを活用してゲームとダッシュボードを連携する方法を説明します。SDKのインストールから環境構築を行うと、ゲーム開発に必要な機能を統合できます。

システム要件

Unity用 GAMEPOT SDKを使用するためのシステム要件は、次の通りです。

  • 最小スペック: 2022.3.44f1以降
  • 以前のバージョンの Unityへの対応が必要な場合は、お問い合わせチャネルにてご確認ください。

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

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

GAMEPOT SDKでサポートしている言語は次の通りです。

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

アプリ実行時にデバイスの言語によって SDKがサポートする言語で自動的に表記され、サポートしていない言語は英語で表記されます。

SDKのインストール

GAMEPOT Unity SDKをインストールし、Unityでプロジェクトを設定する方法は、次の通りです。

  1. Unity公式公開 GitHub から最新バージョンをダウンロードします。
  2. Unityで Assets > Import Package > Custom Package... メニューを順にクリックし、nbase-unity-plugin-[version].unitypackage ファイルを読み込みます。
    • GAMEPOT 3.0からは Mavenと CocoaPodsを通じてデプロイされ、デバイス別に簡単な設定で外部ライブラリと統合できます。
参考

iOSビルドが正常に動作するには、CocoaPodsがインストールされている必要があります。

External Dependency Manager for Unityを含めてインストールされ、簡単に Android、iOSパッケージをインストールできます。

Android Gradleの設定

Androidビルドに必要な Gradleの設定手順を、順に実行してください。

  1. Player Settingsの Publishing Settingsにて、Custom Main Gradle Templateと Custom Gradle Properties Templateを選択します。
    gamepot-UnitySDK01.png
  2. Minimum API Levelを24にアップグレードします。
    gamepot-UnitySDK02.png
  3. Assets > External Dependency Manager > Android Resolver > Settingsメニューを順にクリックし、Enable Auto-Resolutionと Explode AARs項目からチェックを外します。
    gamepot-UnitySDK03.png
  4. 下図のように、Dependencyの設定ファイルをエディタで開き、構成を確認します。
    gamepot-UnitySDK04.png

次は NBase SDK使用に基本的に必要な依存パッケージを定義したファイルです。追加機能を使用するには、以下のファイルに項目を追加すると Androidと iOSにてモジュールを使用できます。

Dependency modulesとは
外部 SDKを使用するためのモジュールです。Googleログインの場合、io.nbase:nbase-adapter-provider-googleのようにアダプターとして提供されるモジュールを一緒にインストールする必要があります。

XML例:

<?xml version="1.0" encoding="UTF-8"?>
<dependencies>
    <androidPackages>
        <androidPackage spec="io.nbase:nbasesdk:3.0.94"/>
    </androidPackages>
    <iosPods>
        <iosPod name="NBase" version="3.0.64" minTargetSdk="15.1" />
    </iosPods>
</dependencies>
  • Googleログインと Google Play Store決済を使用する場合

XML例:

<dependencies>
    <androidPackages>
        <androidPackage spec="io.nbase:nbasesdk:3.0.94"/>
        <androidPackage spec="io.nbase:nbase-adapter-provider-google:3.0.12"/>
        <androidPackage spec="io.nbase:nbase-adapter-billing-googleplay:3.0.9" />
    </androidPackages>
    <iosPods>
        <iosPod name="NBase" version="3.0.64" minTargetSdk="15.1" />
        <iosPod name="NBaseAdapterProviderGoogle" version="3.0.57" minTargetSdk="15.1" />
    </iosPods>
</dependencies>

サポート可能な依存モジュールは次の通りです。

Name Description Dependency modules
io.nbase:nbasesdk GAMEPOT基本モジュール X
io.nbase:nbase-adapter-provider-google Googleログイン X
io.nbase:nbase-adapter-provider-apple Appleログイン X
io.nbase:nbase-adapter-provider-facebook Facebookログイン com.facebook.android:facebook-login:latest.release
io.nbase:nbase-adapter-provider-kakao Kakaoログイン X
io.nbase:nbase-adapter-provider-line LINEログイン X
io.nbase:nbase-adapter-provider-naver NAVERログイン X
io.nbase:nbase-adapter-provider-huawei Huaweiログイン X
io.nbase:nbase-adapter-provider-playgame Google Play Gamesログイン X
io.nbase:nbase-adapter-provider-x Xログイン X
io.nbase:nbase-adapter-billing-googleplay Google Play Store com.android.billingclient:billing-ktx:7.1.1
io.nbase:nbase-adapter-billing-onestore ONE Store X
io.nbase:nbase-adapter-billing-galaxy Galaxy Store X
io.nbase:nbase-adapter-billing-huawei Huawei Store X

メール、ゲストログインの場合は基本モジュールに適用されています。

すべての依存関係を設定した後、Unityエディタにて Assets > External Dependency Manager > Android Resolver > Force Resolveをクリックします。

Dependencies.xmlを構成した後に Force Resolveを実行すると mainTemplate.gradleファイルで定義した内容が implementationとして自動適用されます。この設定が完了しない場合、ビルド時に必要な関連ライブラリーはダウンロードできません。

iOSの設定

/Assets/NBaseSDK/Editor/NBaseSDKDependencies.xmlファイルを開きます。

「iosPods」と「/iosPods」の間に必要なフレームワークを追加します。基本的に必要なフレームワークは追加されています。

XML例:

<?xml version="1.0" encoding="UTF-8"?>
<dependencies>
	<androidPackages>
        ...
	</androidPackages>
    <iosPods>
		<iosPod name="NBase" version="3.0.64" minTargetSdk="15.1" />
    </iosPods>
</dependencies>

Firebaseのように必要なフレームワークをインストールしたい場合にも、以下のように別途追加します。

XML例:

<iosPods> 
       ...
        <iosPod name="FirebaseMessaging" version="10.20.0" minTargetSdk="9.0" />
        <iosPod name="Firebase/Analytics" version="10.15.0" minTargetSdk="9.0" />
        ...
</iosPods>

CocoaPodsがインストールされていない場合は、
Unityエディタにて、Assets > External Dependency Manager > iOS Resolver > Install Cocoapodsをクリックします。

注意

Unityプロジェクトを iOS用にビルドすると Unity-iPhone.xcworkspace ファイルが作成されます。このファイルを開いてください。
Unity-iPhone.xcodeproj の代わりに Unity-iPhone.xcworkspace ファイルを開かないと CocoaPodsの依存関係は使用されません。
Unity 2021からは自動的にそのプロジェクトが選択されます。

Name Description Dependeny modules
NBase GAMEPOT基本モジュール X
NBaseAdapterProviderGoogle Googleログイン X
NBaseAdapterProviderFacebook Facebookログイン FBSDKLoginKit (17.4.0)
NBaseAdapterProviderNaver NAVERログイン X
NBaseAdapterProviderLine LINEログイン X
NBaseAdapterProviderKakao Kakaoログイン X
NBaseAdapterProviderX Xログイン X
注意

一部の依存フレームワークは Swift Package Managerを通じてのみ追加できます。

以下は、Swift Package Managerで追加が必要な、必須の依存フレームワークを手動で追加する方法です。

  1. Xcodeでプロジェクト設定に移動し、Package Dependencies設定に進みます。
    gamepot-UnitySDK05.png

  2. 右上の URL入力欄にhttps://github.com/apollographql/apollo-ios.gitを追加して検索し、apollo-iosを選択した後、Add Packageで追加します。

  3. 表示されるモーダル内の Apolloと ApolloAPIモジュールをプロジェクトのメインターゲット(Unity-iPhone)に追加します。
    gamepot-UnitySDK06.png

    以下の表は、Swift Package Managerで追加する依存モジュールを説明します。

    Name Dependency modules Location Version Framework
    NBase Apollo https://github.com/apollographql/apollo-ios.git 1.15.2

事前準備

GAMEPOT Unity SDKを適用する前に必要な必須設定項目を次の通りご確認ください。

  1. プロジェクト IDとプロジェクトキーはダッシュボード > プロジェクトの設定からコピーします。
  2. ログイン、ストア、連携の環境設定はダッシュボード > プロジェクトの設定にて追加したり変更したりします。
  3. ログイン別にログイン手段別環境設定を参照し、コンソールに設定してダッシュボードに追加します。
  4. In-App決済の前に、ストア別環境設定を参照し、コンソールに設定してダッシュボードに追加します。
  5. In-App決済の前に、決済ストアごとにダッシュボード > 決済 > In-App にてアイテムを登録します。

初期化

初期化を実行するには、ゲームを始める際にロードされる最初の画面に使用されるインスタンスに、以下のコードを追加します。

C# 例:

using UnityEngine;
using NBaseSDK;

 public class GamePotExample : MonoBehaviour
 {
     void Start()
     { 
       NBaseSDK.NBase.initialize(projectId, projectKey, [storeId], [language], [region], (init, error) => {
           if (error != null)
           {
               Debug.Log(error.Message);
               return;
           }
           Debug.Log(init.ToString());
       });
     }
 }

パラメータ

次の表は、初期化に必要なパラメータを説明します。

Key Description Required
projectId ダッシュボード → プロジェクトの設定 O
projectKey ダッシュボード → プロジェクトの設定 O
storeId 以下の表を参考 O
language 言語(en、ko、ja...) O
region リージョン名(kr、jp、sg、us、eu) O

ストア識別子は、次の表をご参照ください。

Key Description
Store.google.ToString() Google Play Store
Store.one.ToString() ONE Store
Store.galaxy.ToString() Galaxy Store
Store.amazon.ToString() Amazon Store
Store.huawei.ToString() Huawei Store
Store.pc.ToString() PCストア
Store.steam.ToString() Steamストア

コールバック情報

次の表は、初期化コールバックに渡される情報を説明します。

Key Type Description
Status bool 状態
Language string 言語
Country string
RemoteIp string IP
Sandbox bool サンドボックスかどうか

初期化 (イベントの受信)

この手順は、Unity Package 3.0.17以降のバージョンでは必要ありません。

はじめに NBaseイベントを受信するスクリプトを作成します。
このスクリプトは NBaseListenerと呼ばれ、シーンのどんなオブジェクトにも配置できます。このオブジェクトが永続的に存在するように DontDestroyOnLoadメソッドを呼び出すことをお勧めします。

下図は、シーンに NBaseListenerスクリプトを構成する例を示しています。
gamepot-UnitySDK09.png

C# 例:

using UnityEngine;
using NBaseSDK;
public class NBaseListener: MonoBehaviour, NBaseEventListener
{
	void Start()
	{
        DontDestroyOnLoad(this.gameObject);
        NBaseSDK.NBase.SetEventListener(this);
    }	
}

ログイン機能

ログイン機能を使用する

開発会社で実装したログイン UIにより、ログインボタンをクリックしたときに動作する SDKログイン機能を使用するには、以下のコードを使用します。これが正常に動作するには、ログインに必要なコンソールとダッシュボードの設定がすべて完了している必要があります。

C# 例:

NBaseSDK.NBase.signIn(Provider.google.ToString(), (user, error) => {
    if (error != null)
    {
        if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_WITHDRAW) // Withdrawal status
        {
            // Withdrawal
            Debug.Log(error.Message.ToString());    // Withdrawal message
        }
        else if (error.Code == NBaseSDK.NBase.ErrorCode.SERVICE_MAINTENANCE) // Maintenance
        {
            Debug.Log(error.Message.ToString());    // Maintenance message
            // case 1: Use in-game popup implemented directly by the developer
            // case 2: Call the code below to use the SDK's own popup
            // NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
            //     // Popup handling
            // });
        }
        else if (error.Code == NBaseSDK.NBase.ErrorCode.UPDATE_REQUIRED) // Update
        {
            Debug.Log(error.Message.ToString());    // Update message
            // case 1: Use in-game popup implemented directly by the developer
            // case 2: Call the code below to use the SDK's own popup
            // NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
            //     // Popup handling
            // });
        }
        else if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_BANNED) // Access blocked
        {
            Debug.Log(error.Message.ToString());    // Block message
        }
        else 
        {
            // signIn Failed
            Debug.Log(error.Message.ToString());
        }
    }
    else
    {
        // signIn Success
        Debug.Log(user.ToString());
    }
    return;
});

アップデートまたはメンテナンス時に SDKが提供する独自のポップアップを使用する場合、以下のコードを追加します。

C# 例:

NBaseSDK.NBase.showAppStatusPopup(appStatus, (status, error) =>
{
    bool shouldClose = false;
    bool shouldNext = false;
    var closeValue = status.Close; 
    var nextValue = status.Next;

    if (closeValue != null)
    {
        if (bool.TryParse(closeValue.ToString(), out bool result))
        {
            shouldClose = result;
        }
    }

    if (shouldClose)
    {
        // App Close
    }

    if (nextValue != null)
    {
        if (bool.TryParse(nextValue.ToString(), out bool result))
        {
            shouldNext = result;
        }
    }

    if (shouldNext)
    {
        // Next, Optional update
    }
});

パラメータ

次の表は、ログイン機能で使用する Providerの値を説明します。

Key Description
Provider.google.ToString() Google
Provider.anonymous.ToString() ゲスト
Provider.facebook.ToString() Facebook
Provider.apple.ToString() Apple
Provider.kakao.ToString() Kakao
Provider.googleplay.ToString() Play Games
Provider.steam.ToString() Steam
Provider.x.ToString() X
Provider.line.ToString() LINE
Provider.naver.ToString() NAVER
Provider.github.ToString() GitHub
Provider.microsoft.ToString() Microsoft
Provider.huawei.ToString() Huawei

ユーザー情報

次の表は、ユーザーオブジェクトのフィールドを説明します。

Key Type Description
Id string ユーザーの固有 ID
SocialId string ソーシャル ID
Name string 氏名 (提供してくれる場合)
Email string メール (提供してくれる場合)
Token string トークン
Age int 年齢 (提供してくれる場合)
Profile string プロファイル (提供してくれる場合)
CustomField string カスタムフィールド
IsSignUp bool 会員登録しているかどうか
AppStatus AppStatus メンテナンス/アップデート状態

アプリの状態情報

次の表は、AppStatusオブジェクトのフィールドを説明します。

Key Type Description
Message string メッセージ
StartedAt long 開始時間
EndedAt long 終了時間
CurrentAppVersion string 現在のアプリバージョン
UpdateAppVersion string アップデート後のアプリバージョン
CurrentAppVersionCode string 現在のアプリバージョンコード
UpdateAppVersionCode string アップデート後のアプリバージョンコード
IsForce bool 強制アップデートかどうか
Url string メンテナンス/アップデートが登録された URL

SDK独自提供のログイン UI

GAMEPOT SDKが提供する完成された形のログイン UIを使用できます。
SDKが提供するログイン UIを呼び出すには、以下のコードを使用します。

C# 例:

NBaseSDK.NBase.openSignInUI((user, error) => {
    if (error != null)
    {
        if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_WITHDRAW) // Withdrawal status
        {
            // Withdrawal
            Debug.Log(error.Message.ToString());    // Withdrawal message
        }
        else if (error.Code == NBaseSDK.NBase.ErrorCode.SERVICE_MAINTENANCE) // Maintenance
        {
            Debug.Log(error.Message.ToString());    // Maintenance message
            // case 1: Use in-game popup implemented directly by the developer
            // case 2: Call the code below to use the SDK's own popup
            // NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
            //     // Popup handling
            // });
        }
        else if (error.Code == NBaseSDK.NBase.ErrorCode.UPDATE_REQUIRED) // Update
        {
            Debug.Log(error.Message.ToString());    // Update message
            // case 1: Use in-game popup implemented directly by the developer
            // case 2: Call the code below to use the SDK's own popup
            // NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
            //     // Popup handling
            // });
        }
        else if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_BANNED) // Access blocked
        {
            Debug.Log(error.Message.ToString());    // Block message
        }
        else 
        {
            // signIn Failed
            Debug.Log(error.Message.ToString());
        }
    }
    else
    {
        // signIn Success
        Debug.Log(user.ToString());
    }
    return;
});

自動ログイン(オプション)

初期化の後、最後にログインした認証手段で自動ログインを試行することができます。自動ログインを試行する前に、最終ログイン Providerタイプの確認をお勧めします。

C# 例:

// 最終ログイン Providerタイプを確認
string lastProviderType = NBaseSDK.NBase.getLastProviderType();

if (lastProviderType != Provider.none.ToString())
{
    // 最終ログイン情報がある場合にのみ自動ログインを試行
    NBaseSDK.NBase.signInLastLoggedIn((user, error) => {
        if (error != null)
        {
            if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_WITHDRAW) // Withdrawal status
            {
                // Withdrawal
                Debug.Log(error.Message.ToString());    // Withdrawal message
            }
            else if (error.Code == NBaseSDK.NBase.ErrorCode.SERVICE_MAINTENANCE) // Maintenance
            {
                // Maintenance
                Debug.Log(error.Message.ToString());    // Maintenance message
                /* case 1: Use in-game popup implemented directly by the developer
                case 2: Call the code below to use the SDK's own popup
                NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
                    // Popup handling
                });
                */
            }
            else if (error.Code == NBaseSDK.NBase.ErrorCode.UPDATE_REQUIRED) // Update
            {
                // Update
                Debug.Log(error.Message.ToString());    // Update message
                /* case 1: Use in-game popup implemented directly by the developer
                case 2: Call the code below to use the SDK's own popup
                NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
                    // Popup handling
                });
                */
            }
            else if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_BANNED) // Access blocked
            {
                // Access blocked
                Debug.Log(error.Message.ToString());    // Block message
            }
            else
            {
                // signIn Failed
                Debug.Log(error.Message.ToString());
            }
        }
        else
        {
            // signIn Success
            Debug.Log(user.ToString());
        }
    });
}
else
{
    // 最終ログイン情報なし
    Debug.Log("No last login provider found");
}

getLastProviderType() メソッドは、最後にログインした Providerタイプを返します。

signInLastLoggedIn() メソッドは、最後にログインした認証手段で自動ログインを試みます。

コールバック情報

次の表は、自動ログインコールバックに渡される値を説明します。

Key Type Description
user User ログイン成功時のユーザー情報
error Error ログイン失敗時のエラー情報

ログアウト

SDKログアウト機能を使用するには、以下のコードをお使いください。

C# 例:

NBaseSDK.NBase.signOut((status, error) => {
    if (error != null)
    {
        // signOut Failed
        Debug.Log("signOut Failed: " + error.Message.ToString());
    }
    else
    {
        // signOut Success
        Debug.Log("signOut Success: " + status.ToString());
        // ログアウト成功後の処理ロジック
    }
});

コールバック情報

次の表は、ログアウトコールバックに渡される値を説明します。

Key Type Description
status Boolean 成功したかどうか

退会

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

C# 例:

NBaseSDK.NBase.deleteMember(providerId, (status, error) => {
    if (error != null)
    {
        // deleteMember Failed
        Debug.Log("deleteMember Failed: " + error.Message.ToString());
    }
    else
    {
        // deleteMember Success
        Debug.Log("deleteMember Success: " + status.ToString());
        // 退会成功後の処理ロジック
    }
});

パラメータ

次の表は、退会時に渡すべきパラメータを説明します。

Key Type Description Required
providerId String ログインした Providerタイプ (例: Provider.google.ToString()、Provider.anonymous.ToString()など) O

コールバック情報

次の表は、退会コールバックの値を説明します。

Key Type Description
status Boolean 成功したかどうか

独自の IDとパスワード認証(オプション)

ユーザーがメールアドレスとパスワードを使用してログインできるようにする認証メソッドです。
ユーザーのメールアドレスとパスワードに基づいてユーザー認証を行います。さらに、この機能は、従来のメール/パスワードベースの認証システムで重要な役割を果たします。

C# 例:

NBaseSDK.NBase.signInWithPassword(username, password, (user, error) => {
    if (error != null)
    {
        Debug.Log(error.Message.ToString());
        return;
    }
});

認証情報でログイン(オプション)

外部から取得したソーシャルアカウントの認証情報(Access Token)を使用してログインするには、以下のコードを使用します。

C# 例:

NBaseSDK.NBase.signInWithCredential(Provider.google.ToString(), providerToken, (user, error) => {
    if (error != null)
    {
        if (error.Code == NBaseSDK.NBase.ErrorCode.SERVICE_MAINTENANCE) // Maintenance
        {
            // Maintenance
            Debug.Log("Maintenance: " + error.Message.ToString());
            /* case 1: Use in-game popup implemented directly by the developer
            case 2: Call the code below to use the SDK's own popup
            NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
                // Popup handling
            });
            */
        }
        else if (error.Code == NBaseSDK.NBase.ErrorCode.UPDATE_REQUIRED) // Update
        {
            // Update
            Debug.Log("Update: " + error.Message.ToString());
            /* case 1: Use in-game popup implemented directly by the developer
            case 2: Call the code below to use the SDK's own popup
            NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
                // Popup handling
            });
            */
        }
        else
        {
            // signInWithCredential Failed
            Debug.Log("signInWithCredential Failed: " + error.Message.ToString());
        }
    }
    else
    {
        // signInWithCredential Success
        Debug.Log("signInWithCredential Success: " + user.ToString());
    }
});

パラメータ

次の表は、認証情報ログインに必要なパラメータを説明します。

Key Type Description Required
provider String Provider ID (例: Provider.google.ToString()、Provider.facebook.ToString()など) O
providerToken String ソーシャルアカウントの Access Token O

コールバック情報

次の表は、認証情報ログインコールバックの値を説明します。

Key Type Description
user User ログイン成功時のユーザー情報
error Error ログイン失敗時のエラー情報

外部アカウント連携機能

GAMEPOTユーザーアカウントに外部ソーシャルアカウントを連携して管理する機能を説明します。

外部アカウント連携機能を使用する

現在の GAMEPOTユーザーアカウントと別のソーシャルアカウントを連携するには、以下のコードを使用します。

C# 例:

NBaseSDK.NBase.createLinking(Provider.google.ToString(), (linkingId, error) => {
    if (error != null)
    {
        // createLinking Failed
        Debug.Log("createLinking Failed: " + error.Message.ToString());
    }
    else
    {
        // createLinking Success
        Debug.Log("createLinking Success: " + linkingId);
        // アカウント連携成功後の処理ロジック
    }
});

パラメータ

次の表は、アカウント連携に必要なパラメータを説明します。

Key Type Description Required
providerId String 連携対象の Providerタイプ (例: Provider.google.ToString()、Provider.facebook.ToString()など) O

コールバック情報

次の表は、アカウント連携コールバックの値を説明します。

Key Type Description
linkingId String 連携成功時に返される連携 ID

連携リストの確認

現在の GAMEPOTユーザーアカウントと連携されたソーシャルアカウントリストを確認するには、以下のコードを使用します。

C# 例:

NBaseSDK.NBase.getLinkedLists((linkings, error) => {
    if (error != null)
    {
        // getLinkedLists Failed
        Debug.Log("getLinkedLists Failed: " + error.Message.ToString());
    }
    else
    {
        // getLinkedLists Success
        Debug.Log("getLinkedLists Success: " + linkings.ToString());
        // 連携リスト確認後の処理ロジック
    }
});

コールバック情報

次の表は、アカウント連携リストの確認時に提供される値を説明します。

Key Type Description
linkings List 連携されたアカウントリスト

Linkingオブジェクト

次の表は、Linkingオブジェクトのフィールドを説明します。

Key Type Description
id String 連携 ID (アカウント連携解除時に使用)
username String ソーシャル ID
provider String ソーシャル providerタイプ

連携解除

現在の GAMEPOTユーザーアカウントから特定のソーシャルアカウント連携を解除するには、以下のコードを使用します。

C# 例:

NBaseSDK.NBase.deleteLinking(linkingId, (status, error) => {
    if (error != null)
    {
        // deleteLinking Failed
        Debug.Log("deleteLinking Failed: " + error.Message.ToString());
    }
    else
    {
        // deleteLinking Success
        Debug.Log("deleteLinking Success: " + status.ToString());
        // 連携解除成功後の処理ロジック
    }
});

パラメータ

次の表は、アカウント連携解除に必要なパラメータを説明します。

Key Type Description Required
linkingId String 解除対象の連携 ID (createLinkingまたは getLinkedListsから取得) O

コールバック情報

次の表は、アカウント連携解除コールバックの値を説明します。

Key Type Description
status Boolean 成功したかどうか

アプリ状態の確認

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

C# 例:

NBaseSDK.NBase.checkAppStatus((status, error) =>
    {
        switch(status.State)
        {
            case NBaseSDK.NBase.AppStatus.Status.SUCCESS:
                // SUCCESS
                break;
            case NBaseSDK.NBase.AppStatus.Status.FAILED:
                // FAILED
                break;
            case NBaseSDK.NBase.AppStatus.Status.MAINTENANCE:
                // Maintenance
                /* case 1: Use in-game popup implemented directly by the developer
                case 2: Call the code below to use the SDK's own popup
                NBaseSDK.NBase.showAppStatusPopup(status, (status, error) => {
                    // Popup handling
                });
                */
                break;
            case NBaseSDK.NBase.AppStatus.Status.UPDATE:
                // Update
                /* case 1: Use in-game popup implemented directly by the developer
                case 2: Call the code below to use the SDK's own popup
                NBaseSDK.NBase.showAppStatusPopup(status, (status, error) => {
                    // Popup handling
                });
                */
                break;
        }
    });

Unity Standaloneのご案内

Standaloneは Mac、Windows、Linux用ビルドを表します。
GAMEPOT SDKはクロスプラットフォームをサポートしますが、モバイルと Standaloneでサポートされる機能が異なります。下記表を参照して開発計画を立ててください。

Service Android iOS Web PC 備考
ログイン O O O PCログイン後、トークンを検証
決済 O O O PC決済ページに移動
お知らせ O O O O UIを除くリスト照会を提供
カスタマーサポート O O O O PCに移動
リーダーボード O O O O
友達管理 O O O O
プッシュ O O X X
メンテナンス O O O O
アップデート O O O O
クーポン O O O O
チャット O O O O
データ保存場所 O O O O
セキュリティ O O X 準備中
プレイヤー O O O O
参考

Webバージョンは GamePot 3.0 Typescriptバージョンにのみ提供される機能です。

Newtonsoft.Jsonクラッシュ

NBase Unity SDKは、APIリクエストのパースに Unityの Newtonsoft JSONパッケージを使用します。JSONは最も一般的に使用されるライブラリの1つであるため、プロジェクトに既に JSONが存在して次のようなライブラリ重複エラーが発生する可能性があります。

この場合、Plugins/StandaloneパスにあるNewtonsoft.Jsonファイルを削除するか、プロジェクトに既にある JSONライブラリを削除して Unityの JSONを使用します。Unityの JSONパッケージは Unityエンジンと一緒に動作するように修正され、IL2CPPを完璧にサポートするバージョンです。

トラブルシューティング

Q. UnityPlayerActivity.java uses or overrides a deprecated API.
A. Edit > Project Settings > Player > Publishing settings > Custom Properties Gradle Templateにチェックを入れてください。

Q. error:1E08010C:DECODER routines::unsupported
A. Google Authentication Keyが一致しない場合に発生する現象で、Google Play Storeガイドを参照してキーを正確に入力してください。

Q. ONE Storeや GAMEPOTベータのような公式 Mavenアドレスは問題ありませんが、Maven、jitpack.ioからはダウンロードできません。
Unityで以下のようなエラーが発生します。

テキスト例:

Could not determine the dependencies of task ':unityLibrary:compileReleaseAidl'.
> Could not resolve all task dependencies for configuration ':unityLibrary:releaseCompileClasspath'.
     > Could not find io.nbase:nbasesdk:0.0.71-beta.
         Required by:
                 project :unityLibrary

公式のパブリック Mavenを使用しないモジュールの場合、以下のように Mavenアドレスを入力する必要があります。NBaseSDKDependenciesファイル設定時に Mavenアドレスも入力してください。

XML例:

<!-- # ONE Store -->
<androidPackage spec="com.onestorecorp.sdk:sdk-iap:21.01.00"/>
    <repositories>
        <repository>https://repo.onestore.co.kr/repository/onestore-sdk-public</repository>
    </repositories>
</androidPackage>

<!-- # NBase Beta mavenリポジトリ -->
<androidPackage spec="io.nbase:nbasesdk:3.0.84"/>
    <repositories>
        <repository>https://repo.nbase.io/repository/nbase-releases/</repository>
    </repositories>
</androidPackage>

jitpack.ioもアドレスを追加してください。

Q. minimum API Levelアップグレードのご案内
A. 基本 API Levelを22から24にアップグレードしてください。
下図は API Levelを調整する場所を示しています。
gamepot-UnitySDK13.png

Q. Authorization failed: Error Domain=AKAuthenticationError Code=-7026
A. TARGETS > +Capabilityをクリックして Sign in with Appleを追加してください。
下図は、Sign in with Apple機能を追加する画面を示しています。
gamepot-UnitySDK14.png

Q. Couldn't get credential from result.10: Developer console is not set up correctly
A. このエラーは、Google Cloud Console > ユーザー認証情報 > OAuth 2.0クライアント IDでウェブアプリケーションタイプのクライアント IDが設定されていないため発生する可能性があります。

Q. 16: Cannot find a matching credential.
A. この場合は、Google Cloud Console > ユーザー認証情報 > OAuth 2.0クライアント IDが登録されていないため発生する可能性があるエラーです。

Q. java.lang.NoClassDefFoundError: Failed resolution of: Lcom/android/billingclient/api/BillingClient;
A. 以下のコードを追加してください。

XML例:

<androidPackage spec="com.android.billingclient:billing:7.0.0" /> 

Q. (iOS) アプリを実行するとクラッシュが発生し、「/AdapterProviderFacebook' (no such file)」エラーが確認される
A. Xcode TARGETS → General → Frameworks, Libraries, and Embedded Content → AdapterProviderFacebook.xcframeworkを追加してください。

Q. (iOS) 実行すると「/usr/lib/swift/NBase.framework/NBase' (no such file, not in dyld cache)」エラーが発生
A. 以下のように NBase.xcframeworkを追加してください。
下図は、NBase.xcframeworkをプロジェクトに追加する手順を示しています。

gamepot-UnitySDK07.png

gamepot-UnitySDK08.png

Q. (iOS) iOS 18環境で「NSBundle file:///System/Library/Frameworks/Metal.framework/ principal class is nil because all fallbacks have failed」エラーが発生

A. Edit Schemeウィンドウ(ショートカット: CMD + SHIFT + ,)を開き、Metal項目の API Validationからチェックを外してください。
下図は、Metal API Validationオプションを無効化する場所を示しています。

gamepot-UnitySDK15.png