Play Games サービスのリコール

独自のユーザー アカウント システムを使い続けながら、ユーザーをゲームにシームレスにログインさせることができます。Play Games サービスの Recall API を使用すると、ゲーム内アカウントを Google Play Games サービス アカウントにリンクできます。ユーザーがさまざまなデバイスでゲームをプレイする(またはゲームを再インストールした後に同じデバイスでプレイする)際に、リンクされたゲーム内アカウントをクエリして、ログイン フローを効率化できます。

Android Recall API と統合している場合、これらの Recall API は見慣れたもののはずです。Play Games サービスのリコールとのサーバーサイド統合は、Android と PC で同じであるため、PC タイトルで再利用できます。

名前空間: PlayPcSdkManaged.Recall

クライアント クラス: RecallClient

前提条件

マニフェストに Play Games サービス プロジェクト ID を追加する

Google Play Console で Play ゲームサービスの設定を完了すると、ゲームに Play ゲームサービス プロジェクト ID が関連付けられます。このプロジェクト ID(Google Play Console の Play ゲームサービスの設定ページで確認できます)を使用して、ゲームの 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>

注: Unity エディタで開発中に、ゲームの実行可能ファイルをデジタル署名したり、Google Play Games から起動したりする必要がない場合は、PC SDK を使用できます。マニフェストの追加の構成手順については、デベロッパー モードの設定ガイドをご覧ください。

クライアントを作成する

RecallClient を作成する場合は、必ず Factory を使用してください。これにより、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();
    }
}

Recall へのアクセスをリクエストする

ゲームがログインフロー(ゲーム内アカウントの追加など)を処理している場合は、RequestRecallAccessAsync を使用して Recall へのアクセスをリクエストします。

この呼び出しは、バックエンドがサーバーサイドで Google を呼び出して、ゲーム内アカウントと Play Games サービス ユーザーをリンクまたはリンク解除するために使用するセッション 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);
    }
}

Recall セッション ID を処理する

ゲームがリコール セッション ID を取得してバックエンド ゲームサーバーに渡したら、Play Games サーバーサイド REST API を使用して次の操作を行います。

  • recall.retrieveTokens を使用して、既存のリンク済みゲーム内アカウントをクエリする
  • recall.linkPersona を使用して、リンクされたゲーム内アカウントを追加または更新する
  • recall.unlinkPersona を使用して、リンクされたゲーム内アカウントを削除します。

サーバーサイド統合の詳細なガイドについては、ゲームサーバー内で Recall API を使用する方法に関するドキュメントをご覧ください。