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

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

モデル

EzNews

お知らせ記事

Hugo サイトデータから生成された個々のニュース記事を表します。
各記事はセクションとコンテンツパスに属し、タイトル、タイムスタンプ、Front Matter メタデータを持ちます。
GS2-Schedule のイベントとリンクして表示期間を制御することもできます。
Front Matter には JSON 形式の追加メタデータが含まれ、表示順序を制御するためのオプションの weight フィールドも含まれます。

有効化条件必須デフォルト値の制限説明
sectionstring
~ 1024文字セクション名
この記事が属するセクション(カテゴリ)。Hugo のコンテンツディレクトリ構造に対応します。
記事を表示用の論理グループに整理するために使用されます。
contentstring
~ 1024文字コンテンツ
セクション内でのこの記事のコンテンツパス識別子。
セクションと合わせて、Hugo コンテンツ構造内の記事の位置を一意に識別します。
titlestring
~ 1024文字記事見出し
ニュース記事のタイトル。通常、Hugo の Front Matter で定義されます。
プレイヤーへの記事一覧表示時に見出しとして表示されます。
scheduleEventIdstring~ 1024文字GS2-Schedule イベント GRN
timestamplong
タイムスタンプ
UNIX 時間・ミリ秒
frontMatterstring
~ 1024文字Front Matter
JSON 形式の記事に関連付けられたメタデータ。元は Hugo マークダウンの Front Matter で定義されます。
weight(表示順序の制御用)、タグ、カテゴリ、その他のカスタムプロパティなどの任意のフィールドを含むことができます。

EzSetCookieRequestEntry

Cookie 設定リクエストエントリ

ニュース記事の Web コンテンツにアクセスするためにブラウザ/WebView に設定する必要がある Cookie のキーバリューペア。
クライアントは記事 URL を読み込む前にこれらの Cookie を設定し、コンテンツへの認可されたアクセスを確保する必要があります。

有効化条件必須デフォルト値の制限説明
keystring
~ 128文字Cookie キー
ニュースコンテンツへの認証アクセスのために設定する Cookie の名前。
最大128文字。
valuestring
~ 1024文字Cookie 値
ニュースコンテンツへの認証アクセスのために設定する Cookie の値。
最大1024文字。

メソッド

getContentsUrl

お知らせコンテンツを表示するためのURLとCookieを取得する

WebViewやブラウザでお知らせ記事を表示するために必要な情報を取得します。
お知らせコンテンツはWebページとしてホストされているため、表示するには (1) 認証用のCookie と (2) 開くURL が必要です。
レスポンスには、ブラウザURL(先にCookieの設定が必要)と、ZIP URL(Cookie不要で全コンテンツをダウンロード可能 — オフライン利用やカスタムレンダリングに便利)が含まれます。
お知らせ記事を開く前に使います。たとえば、このAPIを呼んで返されたCookieをWebViewにセットし、ブラウザURLに遷移して記事を表示します。または、ZIPをダウンロードしてゲームUI内でネイティブにコンテンツを描画することもできます。

Request

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

Result

説明
itemsList<EzSetCookieRequestEntry>お知らせWebコンテンツにアクセスするために設定の必要なクッキーのリスト
browserUrlstringお知らせWebコンテンツにアクセスするためのURL
zipUrlstringZIP形式のお知らせWebコンテンツにアクセスするためのURL (アクセスにCookieの設定は不要)

実装例

    var domain = gs2.News.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).News(
    );
    var result = await domain.GetContentsUrlAsync(
    );
    List<EzSetCookieRequestEntry> cookies = new List<EzSetCookieRequestEntry>();
	var items = result.ToList();
	foreach (var item in items)
	{
	  var entry = await item.ModelAsync();
	  cookies.Add(entry);
	}
    var browserUrl = domain.BrowserUrl;
    var zipUrl = domain.ZipUrl;
    var domain = gs2.News.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).News(
    );
    var future = domain.GetContentsUrlFuture(
    );
    yield return future;
    if (future.Error != null)
    {
        onError.Invoke(future.Error, null);
        yield break;
    }
    List<EzSetCookieRequestEntry> cookies = new List<EzSetCookieRequestEntry>();
    var result = future.Result;
    var items = result.ToList();
    foreach (var item in items)
    {
        var future2 = item.Model();
	    yield return future2;
	    var entry = future2.Result;
	    cookies.Add(entry);
    }
    var browserUrl = domain.BrowserUrl;
    var zipUrl = domain.ZipUrl;
    const auto Domain = Gs2->News->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        GameSession
    )->News(
    );
    const auto Future = Domain->GetContentsUrl(
    );
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }
    TArray<EzSetCookieRequestEntryPtr> Cookies;
	const auto It = Future->GetTask().Result();
	foreach (auto Item in It)
	{
        const auto Future2 = Item.Model();
        Future2->StartSynchronousTask();
        if (Future2->GetTask().IsError())
        {
            return Future2->GetTask().Error();
        }
        Cookies.Add(Future2->GetTask().Result());
	}
    const auto BrowserUrl = Domain->BrowserUrl;
    const auto ZipUrl = Domain->ZipUrl;

listNewses

お知らせ記事の一覧を取得する

プレイヤー向けのゲーム内お知らせ記事(アナウンス)の一覧を取得します。
お知らせ記事はGS2で管理されるHTMLベースのWebコンテンツです。たとえば、メンテナンス告知、イベント告知、アップデートパッチノート、キャンペーン情報などです。
レスポンスにはキャッシュ検証用のハッシュ値も含まれるため、前回取得時からコンテンツが変更されたかチェックできます。
ゲーム内のお知らせ画面を構築するのに使います。たとえば「3月1日メンテナンスのお知らせ」「新イベント: 春の祭典」「バージョン2.5アップデートノート」のような記事一覧の表示に便利です。

Request

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

Result

説明
itemsList<EzNews>お知らせ記事のリスト
contentHashstringお知らせ記事データのハッシュ値
templateHashstringテンプレートデータのハッシュ値

実装例

    var domain = gs2.News.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    var items = await domain.NewsesAsync(
    ).ToListAsync();
    var domain = gs2.News.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    var it = domain.Newses(
    );
    List<EzNews> items = new List<EzNews>();
    while (it.HasNext())
    {
        yield return it.Next();
        if (it.Error != null)
        {
            onError.Invoke(it.Error, null);
            break;
        }
        if (it.Current != null)
        {
            items.Add(it.Current);
        }
        else
        {
            break;
        }
    }
    const auto Domain = Gs2->News->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        GameSession
    );
    const auto It = Domain->Newses(
    );
    TArray<Gs2::UE5::News::Model::FEzNewsPtr> Result;
    for (auto Item : *It)
    {
        if (Item.IsError())
        {
            return false;
        }
        Result.Add(Item.Current());
    }