Play 게임즈 서비스 리콜

자체 계정 시스템을 계속 사용하면서 사용자를 게임에 원활하게 로그인시킵니다. Play 게임즈 서비스 리콜 API를 사용하면 게임 내 계정을 Google Play 게임즈 서비스 계정과 연결할 수 있습니다. 그런 다음 사용자가 여러 기기 (또는 게임을 재설치한 후 동일한 기기)에서 게임을 플레이할 때 연결된 게임 내 계정을 쿼리하고 로그인 흐름을 간소화합니다.

Android Recall API와 통합한 경우 이러한 Recall API가 익숙할 것입니다. Play 게임 서비스 리콜과의 서버 측 통합은 Android와 PC에서 동일하므로 PC 타이틀에서 재사용할 수 있습니다.

네임스페이스: PlayPcSdkManaged.Recall

클라이언트 클래스: RecallClient

기본 요건

매니페스트에 Play 게임즈 서비스 프로젝트 ID 추가

Play Console에서 Play 게임즈 서비스 설정을 완료하면 게임에 연결된 Play 게임즈 서비스 프로젝트 ID가 있습니다. Play Console의 Play 게임 서비스 구성 페이지에서 확인할 수 있는 이 프로젝트 ID를 사용하여 게임의 manifest.xml를 업데이트합니다.

manifest.xml 콘텐츠 예시:

<?xml version="1.0" encoding="utf-8"?>
<?Manifest version="1">
   <?Application>
     <?PackageName>com.example.package<?/PackageName>
     <?PlayGamesServices>
          <?ProjectId>123456789<?/ProjectId>
     <?/PlayGamesServices>
   <?/Application>
<?/Manifest>

참고: 게임 실행 파일을 디지털 서명하거나 Google Play 게임즈에서 실행하지 않고 Unity Editor에서 개발하는 동안 PC SDK를 사용하려는 경우 추가 매니페스트 구성 단계는 개발자 모드 설정 가이드를 참고하세요.

클라이언트 만들기

항상 팩토리를 사용하여 RecallClient를 만드세요. 이렇게 하면 Unity에 안전한 콜백이 자동으로 등록됩니다.

using UnityEngine;
using System;
using System.Threading.Tasks;
// Required SDK Namespaces
using PlayPcSdkManaged.Recall;
using PlayPcSdkManaged.Unity;

public class RecallManager : MonoBehaviour
{
    private RecallClient _recallClient;

    public void SetupRecall()
    {
        try
        {
            // Creates the client with the required UnityRecallCallbacksHandler
            _recallClient = PlayPcSdkFactory.CreateRecallClient();
            Debug.Log("Recall Client created successfully.");
        }
        catch (Exception ex)
        {
            Debug.LogError($"Failed to create Recall Client: {ex.Message}");
        }
    }

    private void OnDestroy()
    {
        // Always dispose of the client to clean up native C++ resources
        _recallClient?.Dispose();
    }
}

리콜 액세스 권한 요청

게임에서 로그인 흐름을 처리하는 경우(예: 게임 내 계정 추가) RequestRecallAccessAsync을 사용하여 Recall 액세스를 요청합니다.

이 호출은 백엔드에서 Google에 서버 측 호출을 실행하여 인게임 계정을 Play 게임즈 서비스 사용자와 연결 및 연결 해제하는 데 사용되는 세션 ID를 반환합니다.

public async Task RequestRecallAccessAsync()
{
    try
    {
        Debug.Log("Requesting Recall access...");

        // Async call to retrieve the session ID
        var result = await _recallClient.RequestRecallAccessAsync();

        if (result.IsOk)
        {
            // On success, access the RecallSessionId
            var sessionId = result.Value.RecallSessionId;
            Debug.Log($"Recall Access Granted! Session ID: {sessionId}");

            // Pass 'sessionId' to your backend server to process account linking
        }
        else
        {
            // Handle expected API errors (e.g., Error)
            Debug.LogError($"Request Failed: {result.Code} - {result.ErrorMessage}");
        }
    }
    catch (Exception ex)
    {
        Debug.LogException(ex);
    }
}

리콜 세션 ID 처리

게임에 리콜 세션 ID가 있고 백엔드 게임 서버에 전달되면 Play 게임즈 서버 측 REST API를 사용하여 다음 작업을 실행합니다.

서버 측 통합을 다루는 자세한 가이드는 게임 서버 내에서 Recall API를 사용하는 방법을 다루는 문서를 참고하세요.