トレーニング
パブリッシャー データの使用
このチュートリアルでは、パブリッシャー (スタジオ) のデータを作成し、使用する方法について説明します。
パブリッシャー データとは、1 つ以上の タイトル にまたがるデータのことです。複数のゲームで共通の情報を共有する必要がある場合などです。
注意
このカテゴリには、複数のゲームにまたがるプレイヤーのデータも含まれています。 PlayFab は、キー/値ペア (KVP) としてデータを格納します。
これらの API の多くは、プログラムが専用サーバーから、または PlayFab サービス内の CloudScript 機能を使用して呼び出す必要があるサーバー API です。
- サーバー API SetPublisherData を使用して更新し、GetPublisherData を使用してパブリッシャー固有のカスタム KVP を取得します。
- プレーヤーのパブリッシャー固有のカスタム KVP を作成または更新するには UpdateUserPublisherData を使用し、取得するには GetUserPublisherData を使用します。
- サーバー API UpdateUserPublisherReadOnlyData を使用して更新し、クライアント API GetUserPublisherReadOnlyData を使用して読み取り専用のパブリッシャー固有のユーザー用カスタム KVP を取得します。
- ユーザーの内部パブリッシャー固有のカスタム KVP を更新するにはサーバー API UpdateUserPublisherInternalData を使用し、取得するには GetUserPublisherInternalData を使用します。
専用サーバーから、または PlayFab サービスの CloudScript 機能を使用するサーバー API を呼び出す必要があります。 これはデザインによるので、PlayFab のサーバー API にシークレット キーを提供する必要があります。
ヒント
ゲーム クライアント内からサーバー API を使用することは お勧めしません。 サーバー API を使用する必要がある場合、このタイプの機能の CloudScript を使用します。
パブリッシャー データの値がコピーされ、可能性のある 何百もの PlayFab サーバー クラスター サーバー内のコンピューターに配布されます。 このプロセスの一環として、このデータをキャッシュし、それらのキャッシュの更新に最大 15 分 かかる場合があります。
注意
パブリッシャー データは グローバル定数/スタティック データ に最適で、グローバル変数 として適切または信頼性が高いのでは ありません。
パブリッシャー データを使用して、1 組のタイトルごとに静的データを格納します。 各エントリは、プレイヤー (ユーザー パブリッシャー データ の対抗として) などのどの PlayFab エンティティにも バインドされていません。
次のスニペットは、サーバー API を使用してパブリッシャーデータを設定する方法を示しています。
注意
この操作の管理 API 向けもあります。
public void ServerSetPublisherData() {
PlayFabServerAPI.SetPublisherData(new SetPublisherDataRequest() {
Key = "SomeKey",
Value = "SomeValue"
},
result => Debug.Log("Complete setting publisher data"),
error => {
Debug.Log("Got error setting publisher data");
Debug.Log(error.GenerateErrorReport());
}
);
}
次のスニペットは、クライアント API を使用してパブリッシャーデータを取得する方法を示しています。
注意
この操作のサーバー API 向けと管理 API 向けもあります。
public void ClientGetPublisherData() {
PlayFabClientAPI.GetPublisherData(new GetPublisherDataRequest(),
result => {
if (result.Data == null || !result.Data.ContainsKey("SomeKey")) Debug.Log("No SomeKey");
else Debug.Log("SomeKey: " + result.Data["SomeKey"]);
},
error => {
Debug.Log("Got error getting publisher data");
Debug.Log(error.GenerateErrorReport());
});
}
ユーザー パブリッシャー データを使用して、PlayFab ユーザー (プレイヤー) にバインドされているパブリッシャー データを導入できます。
通常のパブリッシャデータとは異なり、クライアント アプリケーションがユーザー パブリッシャ データを変更できます。
PlayFab では、クライアント API の観点からのユーザー パブリッシャー データの3つの保護レベルを公開します。
通常のユーザー パブリッシャー データは、クライアント アプリケーションの読み取り/書き込みアクセス権を公開します。
- クライアント/サーバー/管理 API 経由の設定
- クライアント/サーバー/管理 API 経由の取得
- クライアント API は、現在ログインしているプレイヤーに対してパブリッシャー データのみを設定する場合があります。
読み取り専用のユーザー パブリッシャー データは、クライアント アプリケーションの読み取りアクセス権を公開します。
- サーバー/管理 API 経由の設定
- クライアント/サーバー/管理 API 経由の取得
内部ユーザー パブリッシャー データでは、クライアント アプリケーションのアクセスを公開せず、ユーザー データの極秘部分を格納するために使用します。
- サーバー/管理 API 経由の設定
- サーバー/管理 API 経由の取得
次のスニペットでは、クライアント API とサーバー API を使用して、3種類のパブリッシャー データをすべて設定する方法を示しています。
// Use Client API to set User Publisher Data for current user
public void ClientSetUserPublisherData() {
PlayFabClientAPI.UpdateUserPublisherData(new UpdateUserDataRequest() {
Data = new Dictionary<string, string>() {
{ "SomeKey", "SomeValue" }
}
},
result => Debug.Log("Complete setting Regular User Publisher Data"),
error =>
{
Debug.Log("Error setting Regular User Publisher Data");
Debug.Log(error.GenerateErrorReport());
});
}
// Use Server API to set Read-Only User Publisher Data for selected user
public void ServerSetUserPublisherReadOnlyData() {
PlayFabServerAPI.UpdateUserPublisherReadOnlyData(new UpdateUserDataRequest() {
PlayFabId = "< PlayFab Player Id >",
Data = new Dictionary<string, string>() {
{ "SomeKey", "SomeValue" }
}
},
result => Debug.Log("Complete setting Read-Only User Publisher Data"),
error =>
{
Debug.Log("Error setting Read-Only User Publisher Data");
Debug.Log(error.GenerateErrorReport());
});
}
// Use Server API to set Internal User Publisher Data for selected user
public void ServerSetUserPublisherInternalData() {
PlayFabServerAPI.UpdateUserPublisherInternalData(new UpdateUserInternalDataRequest() {
PlayFabId = "< PlayFab Player Id >",
Data = new Dictionary<string, string>() {
{ "SomeKey", "SomeValue" }
}
},
result => Debug.Log("Complete setting Internal User Publisher Data"),
error =>
{
Debug.Log("Error setting Internal User Publisher Data");
Debug.Log(error.GenerateErrorReport());
});
}
次のスニペットでは、クライアント API とサーバー API を使用して、3種類のパブリッシャー データをすべて取得する方法を示しています。
// Use Client API to get Regular User Publisher Data for selected user
public void ClientGetUserPublisherData() {
PlayFabClientAPI.GetUserPublisherData(new GetUserDataRequest() {
PlayFabId = "<PlayFab Player Id>"
}, result => {
if (result.Data == null || !result.Data.ContainsKey("SomeKey")) Debug.Log("No SomeKey");
else Debug.Log("SomeKey: " + result.Data["SomeKey"]);
},
error => {
Debug.Log("Got error getting Regular Publisher Data:");
Debug.Log(error.GenerateErrorReport());
});
}
// Use Client API to get Read-Only User Publisher Data for selected user
public void ClientGetUserPublisherReadOnlyData() {
PlayFabClientAPI.GetUserPublisherReadOnlyData(new GetUserDataRequest() {
PlayFabId = "<PlayFab Player Id>"
}, result => {
if (result.Data == null || !result.Data.ContainsKey("SomeKey")) Debug.Log("No SomeKey");
else Debug.Log("SomeKey: " + result.Data["SomeKey"]);
},
error => {
Debug.Log("Got error getting Read-Only Publisher Data:");
Debug.Log(error.GenerateErrorReport());
});
}
// Use Server API to get Internal User Publisher Data for selected user
public void ServerGetUserPublisherInternalData() {
PlayFabServerAPI.GetUserPublisherInternalData(new GetUserDataRequest() {
PlayFabId = "<PlayFab Player Id>"
}, result => {
if (result.Data == null || !result.Data.ContainsKey("SomeKey")) Debug.Log("No SomeKey");
else Debug.Log("SomeKey: " + result.Data["SomeKey"]);
},
error => {
Debug.Log("Got error getting Internal Publisher Data:");
Debug.Log(error.GenerateErrorReport());
});
}