メインコンテンツまでスキップ

エンタイトルメント更新通知

Last updated on February 4, 2026

注釈:本資料はAI技術を用いて翻訳されています。

備考
  • エンタイトルメント更新通知APIは、AGSプライベートクラウド環境でのみ利用可能で、デフォルトで有効になっています。
  • 現在、通知はグローバルにオンまたはオフになっており、ゲームネームスペースごとに設定することはできません。エンタイトルメント更新通知APIの設定についてサポートをリクエストするには、AccelByteテクニカルプロデューサーに連絡するか、AccelByteカスタマーサポートポータルからリクエストを送信してください。

はじめに

AccelByte Gaming Services (AGS) エンタイトルメント更新通知APIは、プレイヤーのエンタイトルメントに関するリアルタイムの更新を提供し、ゲームクライアント外で発生する変更を含め、プレイヤーが迅速に通知されることを保証します。

サポートされている通知タイプ

AGSエンタイトルメント更新通知APIは、entitlementUpdated通知をサポートしています。

更新されたエンタイトルメント通知

以下は、entitlementUpdated通知のサンプルペイロードです。

{
"type": "entitlementUpdated",
"payload": {
"action": "grant",
"data": [
{
"id": "c1a2b3c4d5e6f7890123456789abcdef",
"namespace": "gaming",
"clazz": "ENTITLEMENT",
"type": "CONSUMABLE",
"status": "Active",
"sku": "premium_subscription",
"userId": "u1a2b3c4d5e6f7890123456789abcdef",
"itemId": "i1a2b3c4d5e6f7890123456789abcdef",
"itemNamespace": "items",
"name": "Premium Subscription",
"useCount": 10,
"source": "Purchase",
"startDate": "2023-01-01T00:00:00Z",
"endDate": "2024-01-01T00:00:00Z",
"grantedAt": "2023-01-01T00:00:00Z",
"createdAt": "2023-01-01T00:00:00Z",
"updatedAt": "2023-06-01T00:00:00Z",
"collectionId": "col1a2b3c4d5e6f7890123456789abcdef",
"stackable": true,
"stackedUseCount": 20
}
]
}
}

次の表は、ペイロード内の各フィールドの機能とサポートされている値を説明しています。

フィールドタイプ説明
actionStringウォレットに対して実行されたアクションGrant: grantEntitlementsまたはgrantUserEntitlement
Sell: sellまたはpublicSell
Split: publicSplit
Delete: これはPlayStationプラットフォームからのアカウント削除アクションによってトリガーされます。
Update: updateEntitlement
Transfer: publicTransfer
Consume: publicConsumeUserEntitlementまたはconsumeUserEntitlement
Revoke: revokeEntitlementsrevokeAllEntitlementsrevokeUserCountrevokeUserEntitlementsrevokeUserEntitlement、またはrevokeUserEntitlementByUseCount
Disable: disable Enable: enable
dataArrayエンタイトルメント更新の詳細を含む
data.idStringエンタイトルメントの一意の識別子
data.namespaceStringエンタイトルメントが存在するネームスペース
data.clazzStringエンタイトルメントのクラス
data.typeStringエンタイトルメントのタイプ
data.statusStringエンタイトルメントのステータス
data.skuStringエンタイトルメントのSKU
data.userIdStringエンタイトルメントに関連付けられたユーザーの識別子
data.itemIdStringエンタイトルメントに関連付けられたアイテムの識別子
data.itemNamespaceStringエンタイトルメントに関連付けられたアイテムが存在するネームスペース
data.nameStringエンタイトルメントの名前
data.useCountIntegerエンタイトルメントの残りの使用回数
data.sourceStringエンタイトルメントのソース
data.startDateDateTimeエンタイトルメント有効期間の開始日
data.endDateDateTimeエンタイトルメント有効期間の終了日
data.grantedAtDateTimeエンタイトルメントが付与された日時
data.createdAtDateTimeエンタイトルメントが作成された日時
data.updatedAtDateTimeエンタイトルメントが最後に更新された日時
data.collectionIdStringエンタイトルメントに関連付けられたコレクションの識別子
data.stackableBooleanエンタイトルメントがスタック可能かどうかを示す
data.stackedUseCountIntegerエンタイトルメント内のスタックされた使用回数

ゲームクライアントとの統合

FOnlineSubsystemAccelByte* AccelByteOSS = static_cast<FOnlineSubsystemAccelByte*>(IOnlineSubsystem::Get(ACCELBYTE_SUBSYSTEM));
if(AccelByteOSS == nullptr)
{
// Bail out if AccelByteOSS is not found
return;
}
FOnlineIdentityAccelBytePtr IdentityInterface = StaticCastSharedPtr<FOnlineIdentityAccelByte>(OnlineSubsystem->GetIdentityInterface());
FOnlineEntitlementsAccelBytePtr EntitlementInterface = StaticCastSharedPtr<FOnlineEntitlementsAccelByte>(OnlineSubsystem->GetEntitlementsInterface());

const int32 LocalUserNum = 0;
// Make sure to connect to lobby first
IdentityInterface->ConnectAccelByteLobby(LocalUserNum);

// To Add a delegate
FDelegateHandle OnEntitlementUpdatedHandle = EntitlementInterface->AddOnEntitlementUpdatedNotificationDelegate_Handle(LocalUserNum, FOnEntitlementUpdatedNotificationDelegate::CreateLambda([](int32 InLocalUserNum, const FUniqueNetId& InUserId, const FAccelByteModelsEntitlementUpdatedNotification& Response)
{
// Do something
}));

// To remove the delegate
EntitlementInterface->ClearOnEntitlementUpdatedNotificationDelegate_Handle(LocalUserNum, OnEntitlementUpdatedHandle);