- この記事は、Google Playゲームサービスに関する記事を和訳したものです。
- 原文: Events in Android Games
- 元記事のライセンスは CC-BYで、この和訳記事のライセンスは CC-BYです。
- 自己責任でご利用ください。
- 和訳した時期は 2019年7月ころです。
このガイドでは、Google Playゲームサービスによって提供されたイベント APIを使用して、ゲームの分析のために、プレイヤーのゲームプレイデータを収集する方法について示しています。
APIは、com.google.android.gms.games.event
および com.google.android.gms.games
にあります。
始める前に
もしまだそうしていなければ、イベントのゲームコンセプトをレビューすることは役立つかもしれません。
イベント APIを使用してコーディングし始める前に:
- Google Play Consoleにて、あなたのゲームのためのイベントを定義します。
- サインインチェックリストの推奨事項に従ってください。
イベントクライアントを取得する
イベント APIを使用し始めるには、あなたのゲームは、まず EventsClient
オブジェクトを取得しなければなりません。
Games.getEventsClient()
メソッドを呼び出し、アクティビティと、現在のプレイヤーの GoogleSignInAccount
を渡すことによって、これを行うことができます。
プレイヤーのアカウント情報を取得する方法については、Androidゲームでのサインインを参照してください。
イベントを提出する
あなたのゲームに興味あるイベントが発生するたびに Google Playゲームサービスに通知するために、あなたのゲームにコードを追加することができます。
イベントの更新を送信するには、eventId
値、および、0以上の整数 incrementAmount
を用いて EventsClient.increment()
を呼び出します。
-
eventId
は、あなたが最初に Google Play Consoleにてイベントを定義したとき Google Playゲームサービスによって定義され、あなたのゲームにてこのイベントをユニークに識別するために使用されます。 -
ゲーム固有の目標を達成するためのプレイヤーの量的な進行状況を指定するために、
incrementAmount
入力を使用することができます。 例えば、もしあなたのゲームが追跡したいイベントが 'Defeat 500 bug-eyed monsters' であるならば、incrementAmount
値は、プレイヤーがひとつの戦いで殺したモンスターの数となることができます。
これは、増分 1を用いてイベントを提出する方法の例です:
public void submitEvent(String eventId) { Games.getEventsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .increment(eventId, 1); }
イベントを取得する
EventsClient.load()
を呼び出すことによって、あなたのゲームのためにGoogleのサーバに格納されたすべてのイベントデータを取得することができます。
メソッド呼び出しでは、Google Playゲームサービスがユーザの端末上のローカルにキャッシュされたデータをクリアする必要があるかどうかを示すためのブール値を渡します。
Google Play Consoleにて定義した特定のイベントのためのデータを取得するには、EventsClient.loadByIds()
を呼び出し、入力パラメータにイベント IDの配列を渡します。
次のスニペットは、あなたのゲームのすべてのイベントのリストについて Google Playゲームサービスにクエリする方法を示しています:
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); } } }); }