GS2-Version SDK for Game Engine API リファレンス

ゲームエンジン向け GS2-Version SDK の モデルの仕様 と API のリファレンス

モデル

EzAcceptVersion

承認したバージョン

アプリバージョンや、アセットバージョンのようなデータに紐づいたバージョンではなく
同意した利用規約のバージョンのようなユーザ毎にバージョン管理が必要なエンティティで使用します。

有効化条件必須デフォルト値の制限説明
versionNamestring
~ 128文字バージョン名
userIdstring
~ 128文字ユーザーID
versionEzVersion
バージョン

EzVersionModel

バージョンモデル

バージョンモデルには、ログインを受け入れるが、バージョンアップ出来ることを通知する警告バージョンと、ログインを受け入れないエラーバージョンを設定できます。

現在のバージョンをクライアントに申告させるのに、署名の有無を指定できます。
署名付きを選択した場合、クライアントは嘘のバージョン申告を出来なくなります。

有効化条件必須デフォルト値の制限説明
namestring
~ 128文字バージョンモデル名
バージョンモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
metadatastring~ 2048文字メタデータ
メタデータには任意の値を設定できます。
これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。
warningVersionEzVersion{type} == “simple”
✓※
バージョンアップを促すバージョン
※ type が “simple” であれば 必須
errorVersionEzVersion{type} == “simple”
✓※
バージョンチェックでエラーになるバージョン
※ type が “simple” であれば 必須
scope文字列列挙型
enum {
  “passive”,
  “active”
}
判定に使用するバージョン値の種類
定義説明
“passive”クライアントから送信
“active”過去明示的に承認したバージョン
currentVersionEzVersion{type} == “simple” and {scope} == “active”
✓※
現在のバージョン
※ type が “simple” で かつ scope が “active” であれば 必須
needSignaturebool{scope} == “passive”
✓※
判定するバージョン値に署名検証を必要とするか
※ scope が “passive” であれば 必須

EzVersion

バージョン

有効化条件必須デフォルト値の制限説明
majorint
0 ~ 2147483646メジャーバージョン
minorint
0 ~ 2147483646マイナーバージョン
microint
0 ~ 2147483646マイクロバージョン

EzStatus

バージョンの状態

バージョンの検証結果を表します。

有効化条件必須デフォルト値の制限説明
versionModelEzVersionModel
バージョンモデル
currentVersionEzVersion現在のバージョン

EzTargetVersion

検証するバージョン

有効化条件必須デフォルト値の制限説明
versionNamestring
~ 128文字バージョンモデル名
バージョンモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
versionEzVersion{signature} == ""
✓※
バージョン
※ signature が "" であれば 必須
bodystring~ 1048576文字ボディ
signaturestring~ 256文字署名

メソッド

getVersionModel

バージョンモデルを取得

Request

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
versionNamestring
~ 128文字バージョンモデル名
バージョンモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。

Result

説明
itemEzVersionModelバージョンモデル

実装例

    var domain = gs2.Version.Namespace(
        namespaceName: "namespace-0001"
    ).VersionModel(
        versionName: "version-0001"
    );
    var item = await domain.ModelAsync();
値の変更イベントハンドリング
    var domain = gs2.Version.Namespace(
        namespaceName: "namespace-0001"
    ).VersionModel(
        versionName: "version-0001"
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.Subscribe(
        value => {
            // 値が変化した時に呼び出される
            // value には変更後の値が渡ってくる
        }
    );

    // イベントハンドリングを停止
    domain.Unsubscribe(callbackId);

listVersionModels

バージョンモデルの一覧を取得

Request

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。

Result

説明
itemsList<EzVersionModel>バージョンモデルのリスト

実装例

    var domain = gs2.Version.Namespace(
        namespaceName: "namespace-0001"
    );
    var items = await domain.VersionModelsAsync(
    ).ToListAsync();
値の変更イベントハンドリング
    var domain = gs2.Version.Namespace(
        namespaceName: "namespace-0001"
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.SubscribeVersionModels(
        () => {
            // リストの要素が変化した時に呼び出される
        }
    );

    // イベントハンドリングを停止
    domain.UnsubscribeVersionModels(callbackId);

accept

バージョンを承認する

利用規約などで使用します。

Request

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
gameSessionGameSession
GameSession
versionNamestring
~ 128文字バージョン名
versionEzVersion承認したバージョン

Result

説明
itemEzAcceptVersion承認したバージョン

Error

このAPIには特別な例外が定義されています。
GS2-SDK for GameEngine ではゲーム内でハンドリングが必要そうなエラーは一般的な例外から派生した特殊化した例外を用意することでハンドリングしやすくしています。
一般的なエラーの種類や、ハンドリング方法は こちら のドキュメントを参考にしてください。

基底クラス説明
AcceptVersionInvalidExceptionBadRequestException承認プロセスの途中でサーバーバージョンが更新された結果、エラーとなりました

実装例

try {
    var domain = gs2.Version.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).AcceptVersion(
        versionName: "eula"
    );
    var result = await domain.AcceptAsync(
        version: new Gs2.Unity.Gs2Version.Model.EzVersion {
            Major = 2,
            Minor = 2,
            Micro = 2,
        }
    );
    var item = await result.ModelAsync();
} catch(Gs2.Gs2Version.Exception.AcceptVersionInvalidException e) {
    // Error as a result of an updated server version during the approval process
}

delete

承認したバージョンを削除する

Request

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
gameSessionGameSession
GameSession
versionNamestring
~ 128文字バージョン名

Result

説明
itemEzAcceptVersion削除した承認バージョン

実装例

    var domain = gs2.Version.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).AcceptVersion(
        versionName: "eula"
    );
    var result = await domain.DeleteAsync(
    );

list

承認したバージョンの一覧を取得

Request

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
gameSessionGameSession
GameSession
pageTokenstring~ 1024文字データの取得を開始する位置を指定するトークン
limitint301 ~ 1000データの取得件数

Result

説明
itemsList<EzAcceptVersion>承認したバージョンのリスト
nextPageTokenstringリストの続きを取得するためのページトークン

実装例

    var domain = gs2.Version.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    var items = await domain.AcceptVersionsAsync(
    ).ToListAsync();
値の変更イベントハンドリング
    var domain = gs2.Version.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    
    // イベントハンドリングを開始
    var callbackId = domain.SubscribeAcceptVersions(
        () => {
            // リストの要素が変化した時に呼び出される
        }
    );

    // イベントハンドリングを停止
    domain.UnsubscribeAcceptVersions(callbackId);

reject

バージョンを拒否する

承認が必須でない規約で否認されたことを記録するために使用します。
VersionModel で approveRequirement に optional を指定している場合に利用可能です。

Request

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
gameSessionGameSession
GameSession
versionNamestring
~ 128文字バージョン名
versionEzVersion否認したバージョン

Result

説明
itemEzAcceptVersion否認したバージョン

Error

このAPIには特別な例外が定義されています。
GS2-SDK for GameEngine ではゲーム内でハンドリングが必要そうなエラーは一般的な例外から派生した特殊化した例外を用意することでハンドリングしやすくしています。
一般的なエラーの種類や、ハンドリング方法は こちら のドキュメントを参考にしてください。

基底クラス説明
AcceptVersionInvalidExceptionBadRequestException承認プロセスの途中でサーバーバージョンが更新された結果、エラーとなりました

実装例

try {
    var domain = gs2.Version.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).AcceptVersion(
        versionName: "version-0001"
    );
    var result = await domain.RejectAsync(
        version: null
    );
    var item = await result.ModelAsync();
} catch(Gs2.Gs2Version.Exception.AcceptVersionInvalidException e) {
    // Error as a result of an updated server version during the approval process
}

checkVersion

バージョンチェックを実行

Request

有効化条件必須デフォルト値の制限説明
namespaceNamestring
~ 128文字ネームスペース名
ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
gameSessionGameSession
GameSession
targetVersionsList<EzTargetVersion>[]0 ~ 1000 items検証するバージョンリスト

Result

説明
projectTokenstringサインインしたプロジェクトトークン
warningsList<EzStatus>バージョンの検証結果 警告のリスト
errorsList<EzStatus>バージョンの検証結果 エラーのリスト

実装例

    var domain = gs2.Version.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Checker(
    );
    var result = await domain.CheckVersionAsync(
        targetVersions: new List<Gs2.Unity.Gs2Version.Model.EzTargetVersion> {
            new Gs2.Unity.Gs2Version.Model.EzTargetVersion() {
                VersionName = "app",
                Version = 
                new Gs2.Unity.Gs2Version.Model.EzTargetVersion() {
                    Major = 1,
                    Minor = 2,
                    Micro = 3,
                },
            },
            new Gs2.Unity.Gs2Version.Model.EzTargetVersion() {
                VersionName = "asset",
                Version = 
                new Gs2.Unity.Gs2Version.Model.EzTargetVersion() {
                    Major = 1,
                    Minor = 2,
                    Micro = 3,
                },
            },
        }
    );
    var projectToken = result.ProjectToken;
    var warnings = result.Warnings;
    var errors = result.Errors;