独自のユーザー アカウント システムを使い続けながら、ユーザーをゲームにシームレスにログインさせることができます。Play Games サービスの Recall API を使用すると、ゲーム内アカウントを Google Play Games サービス アカウントにリンクできます。ユーザーがさまざまなデバイスでゲームをプレイする(またはゲームを再インストールした後に同じデバイスでプレイする)際に、リンクされたゲーム内アカウントをクエリして、ログイン フローを効率化できます。
Android Recall API と統合している場合、これらの Recall API は見慣れたもののはずです。Play Games サービスのリコールとのサーバーサイド統合は、Android と PC で同じであるため、PC タイトルで再利用できます。
名前空間: PlayPcSdkManaged.Recall
クライアント クラス: RecallClient
前提条件
Play Games Services Recall API の概要を確認します。
Google Play Console で Google Play Games サービスの設定を完了します。
マニフェストに 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 を使用する方法に関するドキュメントをご覧ください。