GS2-News SDK for Game Engine API リファレンス
モデル
EzNews
お知らせ記事
Hugo サイトデータから生成された個々のニュース記事を表します。
各記事はセクションとコンテンツパスに属し、タイトル、タイムスタンプ、Front Matter メタデータを持ちます。
GS2-Schedule のイベントとリンクして表示期間を制御することもできます。
Front Matter には JSON 形式の追加メタデータが含まれ、表示順序を制御するためのオプションの weight フィールドも含まれます。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| section | string | ✓ | ~ 1024文字 | セクション名 この記事が属するセクション(カテゴリ)。Hugo のコンテンツディレクトリ構造に対応します。 記事を表示用の論理グループに整理するために使用されます。 | ||
| content | string | ✓ | ~ 1024文字 | コンテンツ セクション内でのこの記事のコンテンツパス識別子。 セクションと合わせて、Hugo コンテンツ構造内の記事の位置を一意に識別します。 | ||
| title | string | ✓ | ~ 1024文字 | 記事見出し ニュース記事のタイトル。通常、Hugo の Front Matter で定義されます。 プレイヤーへの記事一覧表示時に見出しとして表示されます。 | ||
| scheduleEventId | string | ~ 1024文字 | GS2-Schedule イベント GRN | |||
| timestamp | long | ✓ | タイムスタンプ UNIX 時間・ミリ秒 | |||
| frontMatter | string | ✓ | ~ 1024文字 | Front Matter JSON 形式の記事に関連付けられたメタデータ。元は Hugo マークダウンの Front Matter で定義されます。 weight(表示順序の制御用)、タグ、カテゴリ、その他のカスタムプロパティなどの任意のフィールドを含むことができます。 |
EzSetCookieRequestEntry
Cookie 設定リクエストエントリ
ニュース記事の Web コンテンツにアクセスするためにブラウザ/WebView に設定する必要がある Cookie のキーバリューペア。
クライアントは記事 URL を読み込む前にこれらの Cookie を設定し、コンテンツへの認可されたアクセスを確保する必要があります。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| key | string | ✓ | ~ 128文字 | Cookie キー ニュースコンテンツへの認証アクセスのために設定する Cookie の名前。 最大128文字。 | ||
| value | string | ✓ | ~ 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
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| gameSession | GameSession | ✓ | GameSession |
Result
| 型 | 説明 | |
|---|---|---|
| items | List<EzSetCookieRequestEntry> | お知らせWebコンテンツにアクセスするために設定の必要なクッキーのリスト |
| browserUrl | string | お知らせWebコンテンツにアクセスするためのURL |
| zipUrl | string | ZIP形式のお知らせ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
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| gameSession | GameSession | ✓ | GameSession |
Result
| 型 | 説明 | |
|---|---|---|
| items | List<EzNews> | お知らせ記事のリスト |
| contentHash | string | お知らせ記事データのハッシュ値 |
| templateHash | string | テンプレートデータのハッシュ値 |
実装例
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());
}