Android ゲームのイベント
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
Google ログイン API のサポート終了に伴い、games v1 SDK は 2026 年に削除されます。2025 年 2 月以降、games v1 SDK を新しく統合したタイトルを Google Play で公開することはできなくなります。代わりに、games v2 SDK を使用することをおすすめします。
以前のゲーム v1 と統合されている既存のタイトルは数年間は引き続き機能しますが、2025 年 6 月以降は v2 に移行することをおすすめします。
このガイドは、Play Games サービス v1 SDK の使用を対象としています。最新の SDK バージョンについては、v2 のドキュメントをご覧ください。
このガイドでは、Google Play Games サービスが提供するイベント API を使用して、ゲーム分析のためにプレーヤーのゲームプレイ データを収集する方法について説明します。この API は com.google.android.gms.games.event
と com.google.android.gms.games
にあります。
始める前に
イベントゲームのコンセプトをまだ確認されていない場合は、確認することをおすすめします。
イベント API を使用してコーディングを開始する前に:
イベント クライアントを取得する
イベント API の使用を開始するには、まずゲームで EventsClient
オブジェクトを取得する必要があります。そのためには、Games.getEventsClient()
メソッドを呼び出して、アクティビティと現在のプレーヤーの GoogleSignInAccount
を渡します。プレーヤーのアカウント情報を取得する方法については、Android ゲームにログインする方法についての説明をご覧ください。
イベントを送信する
コードをゲームに追加して、ゲームに関連するイベントが発生したときに Google Play Games サービスに通知することができます。
イベントの更新を送信するには、eventId
値と 0 以上の整数 incrementAmount
を指定して EventsClient.increment()
を呼び出します。
eventId
は、Google Play Console で初めてイベントを定義するときに Google Play Games サービスによって生成され、ゲーム内でこのイベントを一意に識別するために使用されます。
incrementAmount
入力を使用すると、ゲーム固有の目標の達成に向けた、プレーヤーの定量的な進行状況を指定できます。たとえば、ゲームでトラッキングするイベントが「目の飛び出たモンスター 500 体を倒す」である場合、incrementAmount
の値はプレーヤーが 1 回の戦闘で倒したモンスターの数となります。
増分を 1 としてイベントを送信する方法の例を次に示します。
public void submitEvent(String eventId) {
Games.getEventsClient(this, GoogleSignIn.getLastSignedInAccount(this))
.increment(eventId, 1);
}
イベントを取得する
EventsClient.load()
を呼び出すことで、ゲーム用に Google のサーバーに保存されているすべてのイベントデータを取得できます。このメソッド呼び出しでは、Google Play Games サービスがユーザーのデバイス上にローカルにキャッシュされたデータを消去するかどうかを示すブール値を渡します。
Google Play Console で定義した特定のイベントのデータを取得するには、EventsClient.loadByIds()
を呼び出して、入力パラメータにイベント ID の配列を渡します。
次のスニペットは、ゲームのすべてのイベントのリストについて Google Play Games サービスにクエリを行う方法を示しています。
public void loadEvents() {
Games.getEventsClient(this, GoogleSignIn.getLastSignedInAccount(this))
.load(true)
.addOnCompleteListener(new OnCompleteListener<AnnotatedData<EventBuffer>>() {
@Override
public void onComplete(@NonNull Task<AnnotatedData<EventBuffer>> task) {
if (task.isSuccessful()) {
// Process all the events.
for (Event event : task.getResult().get()) {
Log.d(TAG, "loaded event " + event.getName());
}
} else {
// Handle Error
Exception exception = task.getException();
int statusCode = CommonStatusCodes.DEVELOPER_ERROR;
if (exception instanceof ApiException) {
ApiException apiException = (ApiException) exception;
statusCode = apiException.getStatusCode();
}
showError(statusCode);
}
}
});
}
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-07-27 UTC。
[null,null,["最終更新日 2025-07-27 UTC。"],[],[],null,["# Events in Android games\n\nFollowing the deprecation of the\n[Google Sign-In](https://android-developers.googleblog.com/2024/09/streamlining-android-authentication-credential-manager-replaces-legacy-apis.html)\nAPI, we are removing the games v1 SDK in 2026. After February 2025, you will be unable to publish\ntitles that are newly integrated with games v1 SDK, on Google Play. We recommend that you use the\ngames v2 SDK instead. \n\nWhile existing titles with the previous games v1 integrations continue to function for a\ncouple of years, you are encouraged to\n[migrate to v2](/games/pgs/android/migrate-to-v2)\nstarting June 2025. \n\nThis guide is for using the Play Games Services v1 SDK. For information\non the latest SDK version, see the\n[v2 documentation](/games/pgs/android/events).\n\nThis guide shows you how to collect player gameplay data for game analytics using the events APIs\nprovided by Google Play Games Services. The APIs can be found in the\n[`com.google.android.gms.games.event`](https://developers.google.com/android/reference/com/google/android/gms/games/event/package-summary)\nand [`com.google.android.gms.games`](https://developers.google.com/android/reference/com/google/android/gms/games/package-summary).\n\nBefore you begin\n----------------\n\nIf you haven't already done so, you might find it helpful to review the\n[events game concepts](/games/pgs/events).\n\nBefore you start to code using the events APIs:\n\n- Define the events for your game in the [Google Play Console](https://play.google.com/apps/publish/).\n- Follow the [sign-in checklist recommendations](/games/pgs/v1/quality#sign-in).\n\nGet the events client\n---------------------\n\nTo start using the events APIs, your game must first obtain an\n[`EventsClient`](https://developers.google.com/android/reference/com/google/android/gms/games/EventsClient) object. You can do this by calling the\n[`Games.getEventsClient()`](https://developers.google.com/android/reference/com/google/android/gms/games/Games.html#getEventsClient(android.app.Activity,%20com.google.android.gms.auth.api.signin.GoogleSignInAccount)) method and passing in the\nactivity and the [`GoogleSignInAccount`](https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInAccount) for the current player. To learn how to\nretrieve the player account information, see\n[Sign-in in Android Games](/games/pgs/v1/android/signin).\n| **Note:** The [`EventsClient`](https://developers.google.com/android/reference/com/google/android/gms/games/EventsClient) class makes use of the Google Play services [`Task`](https://developers.google.com/android/reference/com/google/android/gms/tasks/Task) class to return results asynchronously. To learn more about using tasks to manage threaded work, see the [Tasks API developer guide](https://developers.google.com/android/guides/tasks).\n\nSubmit events\n-------------\n\nYou can add code in your game to notify Google Play Games Services whenever an\nevent of interest to your game occurs.\n\nTo send an event update, call [`EventsClient.increment()`](https://developers.google.com/android/reference/com/google/android/gms/games/EventsClient.html#increment(java.lang.String,%20int)) with the `eventId` value and an\ninteger `incrementAmount` that is equal to or greater than 0.\n\n- The `eventId` is generated by Google Play Games Services when you first define the event in the Google Play Console and is used to uniquely identify this event in your game.\n- You can use the `incrementAmount` input to specify the player's quantitative progress towards completing some game-specific goal. For example, if the event your game wants to track is *'Defeat 500 bug-eyed monsters'* , the `incrementAmount` value can be the number of monsters that the player killed in a single battle.\n\nHere's an example of how to submit an event with an increment amount of 1: \n\n```text\npublic void submitEvent(String eventId) {\n Games.getEventsClient(this, GoogleSignIn.getLastSignedInAccount(this))\n .increment(eventId, 1);\n}\n```\n\nRetrieve events\n---------------\n\nYou can retrieve all events data stored in Google's servers for your game, by\ncalling [`EventsClient.load()`](https://developers.google.com/android/reference/com/google/android/gms/games/EventsClient.html#load(boolean)). In the\nmethod call, pass in a boolean value to indicate if Google Play Games Services should clear the locally\ncached data on the user's device.\n\nTo retrieve data for specific events that you defined in the Google Play Console, call\n[`EventsClient.loadByIds()`](https://developers.google.com/android/reference/com/google/android/gms/games/EventsClient.html#loadByIds(boolean,%20java.lang.String...)) and pass in an array of event IDs in the input parameters.\n\nThe following snippet shows how you can query Google Play Games Services for the\nlist of all events for your game: \n\n```gdscript\npublic void loadEvents() {\n Games.getEventsClient(this, GoogleSignIn.getLastSignedInAccount(this))\n .load(true)\n .addOnCompleteListener(new OnCompleteListener\u003cAnnotatedData\u003cEventBuffer\u003e\u003e() {\n @Override\n public void onComplete(@NonNull Task\u003cAnnotatedData\u003cEventBuffer\u003e\u003e task) {\n if (task.isSuccessful()) {\n // Process all the events.\n for (Event event : task.getResult().get()) {\n Log.d(TAG, \"loaded event \" + event.getName());\n }\n } else {\n // Handle Error\n Exception exception = task.getException();\n int statusCode = CommonStatusCodes.DEVELOPER_ERROR;\n if (exception instanceof ApiException) {\n ApiException apiException = (ApiException) exception;\n statusCode = apiException.getStatusCode();\n }\n showError(statusCode);\n }\n }\n });\n}\n```"]]