エコノミー v2 サブスクリプション
サブスクリプションを使用すると、耐久財への時間ベースのアクセスを許可できます。 サブスクリプション内のアイテムは、GetInventoryItems を呼び出した後、プレイヤーのインベントリにアンパックされます。
注意
この記事では、仮想サブスクリプション、つまりゲーム内に存在するサブスクリプションについて説明します。 プライベート プレビューの新機能では、PlayFab の Inventory Redeem API を使用して仮想サブスクリプションを実際のマーケットプレースにリンクできます。 方法の詳細については、次の記事を参照してください:
この機能にアクセスするには、PFEconomyPreviews@microsoft.com に 「PlayFab モバイル サブスクリプション」という件名で、PlayFab タイトル ID を記載したメールをお送りください。お使いの環境でこの機能を有効にします。
サブスクリプションの作成
サブスクリプションを作成するには、まず、ゲームでアクセス可能/購入可能にするカタログ アイテム、通貨、またはユーザー生成コンテンツ (UGC) を公開しておく必要があります。 サブスクリプションを作成する前にカタログを設定するには、「エコノミー V2 クイック スタート」を参照してください。
[エコノミー>カタログ (V2)] に移動します。
[サブスクリプション] タブで、[新しいサブスクリプション] を選択します。
上記の Holiday Skins Pass のサブスクリプションでは、2 つのアイテム (Glowing Gloves
と Shiny Shoes
) が 2 つの価格ポイントで 2 つの異なる有効期間で付与されます。 1 つ目の価格セットである 5 個のダイヤモンドと 10 個のゴールドは、サブスクリプションが 1 週間有効であることを保証し、2 つ目の価格セットは 7 個のダイヤモンドと 12 ゴールドで、サブスクリプションが 1 か月間有効であることを保証します。 時間を秒単位で設定する必要があることに注意してください。
これにより、サブスクリプションが作成され、発行されたという応答が返されます。
{
"code": 200,
"status": "OK",
"data": {
"Item": {
"Id": "{{NewlyCreatedSubscriptionItemID}}",
"Type": "subscription",
"AlternateIds": [],
"Title": {
"NEUTRAL": "Holiday Skins Pass"
},
...
}
インベントリ内のサブスクリプション
サブスクリプションは、ID、StackId、有効期限、表示プロパティを持つプレイヤーのインベントリ コレクションに存在します。 サブスクリプション内のすべての内容は、Add、Subtract、Update などを使用して、他のアイテムと同様に変更できます。
GetInventoryItems と Type フィルターを使用して、プレイヤーが現在持っているすべてのサブスクリプションを取得できます。
{
"Entity": {
"Type": "title_player_account",
"Id": "ID"
},
"CollectionId": "default",
"Filter": "type eq 'subscription'"
}
**Sample Response**
{
"code": 200,
"status": "OK",
"data": {
"Items": [
{
"Id": "{{SubscriptionID}}",
"StackId": "default",
"DisplayProperties": {},
"Type": "subscription",
"ExpirationDate": "2023-08-27T23:59:59Z"
}
],
"ETag": "1/Mw=="
}
}
期限切れサブスクリプションは、読み取り時にアンパックされます。 アンパックされた項目には、想定される ID、サブスクリプション ID とサブスクリプションの StackId で構成される一意の複合 StackId があります。 金額は、サブスクリプション項目参照で構成された金額に設定されます。 これらのアンパックされた項目は変更不可であり、Add、Subtract、Update などを使用して変更することはできません。
{
"Entity": {
"Type": "title_player_account",
"Id": "ID"
},
"CollectionId": "default",
"Filter": "StackId eq 'SubscriptionItemID:default'"
}
**Sample Response**
{
"code": 200,
"status": "OK",
"data": {
"Items": [
{
"Id": "{{GlowingGlovesItemID}}",
"StackId": "{{SubscriptionID:default}}",
"DisplayProperties": {},
"Amount": 1,
"Type": "catalogItem"
},
{
"Id": "{{ShinyShoesItemID}}",
"StackId": "{{SubscriptionID:default}}",
"DisplayProperties": {},
"Amount": 1,
"Type": "catalogItem"
}
],
"ETag": "1/NQ=="
}
}
サブスクリプションのアンパックは、コレクション内の他の項目と同様にサブスクリプション項目を確実にフィルター処理およびページングできるように、フィルター処理とページングの前に行われます。
UpdateInventoryItems、AddInventoryItems、SubtractIventoryItems を使用して、プレイヤーのサブスクリプションの有効期限を更新できます。
UpdateInventoryItems
ここでの API 呼び出しでは、サブスクリプションの有効期限が更新されます。
{
"Entity": {
"Type": "title_player_account",
"Id": "{{ID}}"
},
"CollectionId": "default",
"Item": {
"Id": "{{SubscriptionID}}",
"StackId": "default",
"DisplayProperties": {},
"Type": "subscription",
"ExpirationDate": "2023-03-27T23:59:59Z"
}
}
AddInventoryItems
ここでの API 呼び出しでは、DurationInSeconds パラメーターを増やすことで有効期限が延長されます。
{
"Entity": {
"Type": "title_player_account",
"Id": "{{ID}}"
},
"CollectionId": "default",
"Item": {
"Id": "{{SubscriptionID}}"
},
"DurationInSeconds":2628000
}
SubtractInventoryItems
ここでの API 呼び出しでは、DurationInSeconds パラメーターを減らすことで有効期限が短縮されます。
{
"Entity": {
"Type": "title_player_account",
"Id": "{{ID}}"
},
"CollectionId": "default",
"Item": {
"Id": "{{SubscriptionID}}"
},
"DurationInSeconds":60
}