다음을 통해 공유


퍼블리셔 데이터 사용하기

이 자습서는 퍼블리셔(스튜디오) 데이터를 생성하고 사용하는 방법을 설명합니다.

퍼블리셔 데이터는 공통 정보를 공유해야 하는 여러 게임이 있는 경우처럼 2개 이상의 타이틀에 걸쳐 있는 데이터입니다.

참고 항목

이 카테고리에는 여러 게임에 걸쳐 있는 플레이어 데이터도 포함됩니다. PlayFab은 키/값의 쌍(KVP)으로 데이터를 저장합니다.

이러한 API의 대부분은 프로그램이 전용 서버 또는 PlayFab 서비스 내의 CloudScript 함수를 통해 호출해야 하는 서버 API입니다.

서버 API는 전용 서버 또는 PlayFab 서비스를 통한 CloudScript 함수를 통해 호출해야 합니다. PlayFab 서버 API는 사용자가 비밀 키를 제공해야 하므로 의도적으로 설계된 것입니다.

게임 클라이언트 내부에서 서버 API를 사용하는 것은 바람직하지 않습니다. 서버 API를 사용해야 하는 경우 이러한 유형의 기능을 위한 CloudScript를 사용하십시오.

퍼블리셔 데이터 값은 복사된 후 잠재적으로 PlayFab 클러스터 서버 내 수백 대의 컴퓨터에 배포됩니다. 이 과정의 일환으로 이 데이터는 캐시되므로, 변경 사항이 해당 캐시에 반영되기까지 최대 15분이 걸릴 수 있습니다.

참고 항목

퍼블리셔 데이터는 전역 상수/정적 데이터에 가장 적합하며 전역 변수로서는 적합하지 않고 안정적이지 않습니다.

퍼블리셔 데이터

퍼블리셔 데이터는 일련의 타이틀에 대한 정적 데이터를 저장하는 데 사용됩니다. (사용자 퍼블리셔 데이터와 달리) 각 항목은 플레이어와 같은 어떠한 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 항목이 있습니다.

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를 사용하여 모든 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를 사용하여 모든 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());
    });
}

참고 항목