パブリッシャー データの使用

このチュートリアルでは、パブリッシャー データ API を使用して名前空間スコープのデータを作成して使用する方法について説明します。

パブリッシャー データは、複数のゲームが共通の情報を共有する必要がある場合など、PlayFab 名前空間内の複数のタイトルにまたがる静的データです。 パブリッシャーは、名前空間スコープの古い API 用語であり、パブリッシャー ID は名前空間を識別します。 名前空間は、タイトル、ユーザー、アクセス許可、課金の管理グループであるスタジオとは異なります。 詳細については、「PlayFab の概念」を参照してください。

注意

このカテゴリには、複数のゲームにまたがるプレイヤーのデータも含まれています。 PlayFab は、キー/値ペア (KVP) としてデータを格納します。

これらの API の多くは、プログラムが専用サーバーから、または PlayFab サービス内の CloudScript 機能を使用して呼び出す必要があるサーバー API です。

専用サーバーから、または PlayFab サービスの CloudScript 機能を使用するサーバー API を呼び出す必要があります。 これはデザインによるので、PlayFab のサーバー API にシークレット キーを提供する必要があります。

ヒント

ゲーム クライアント内からサーバー API を使用することは お勧めしません。 サーバー API を使用する必要がある場合、このタイプの機能の CloudScript を使用します。

パブリッシャー データの値がコピーされ、可能性のある 何百もの PlayFab サーバー クラスター サーバー内のコンピューターに配布されます。 このプロセスの一環として、このデータをキャッシュし、それらのキャッシュの更新に最大 15 分 かかる場合があります。

注意

パブリッシャー データはグローバル定数/スタティック データに最適で、グローバル変数として適切または信頼性が高いのではありません

パブリッシャー データ

パブリッシャー データは、名前空間にタイトルの静的データを格納するために使用されます。 各エントリは、(ユーザー パブリッシャー データとは異なり) プレイヤー エンティティにはバインドされません

パブリッシャー データの設定

次のスニペットは、サーバー 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つの保護レベルを公開します。

  1. 通常のユーザー パブリッシャー データは、クライアント アプリケーションの読み取り/書き込みアクセス権を公開します。

    • クライアント/サーバー/管理 API 経由の設定
    • クライアント/サーバー/管理 API 経由の取得
    • クライアント API は、現在ログインしているプレイヤーに対してパブリッシャー データのみを設定する場合があります。
  2. 読み取り専用のユーザー パブリッシャー データは、クライアント アプリケーションの読み取りアクセス権を公開します。

    • サーバー/管理 API 経由の設定
    • クライアント/サーバー/管理 API 経由の取得
  3. 内部ユーザー パブリッシャー データでは、クライアント アプリケーションのアクセスを公開せず、ユーザー データの極秘部分を格納するために使用します。

    • サーバー/管理 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());
    });
}

関連項目