Android ゲームのイベント

このガイドでは、イベント API を使用して、ゲーム分析のためにプレーヤーのゲームプレイ データを収集する方法について説明します。 ゲーム デベロッパーや Google Play Games サービスが提供するアプリこの API は com.google.android.gms.games.eventcom.google.android.gms.games にあります。

始める前に

イベントゲームのコンセプトをまだ確認されていない場合は、確認することをおすすめします。

イベント API を使用してコーディングを開始する前に:

イベント クライアントを取得する

イベント API の使用を開始するには、まずゲームで EventsClient オブジェクト。これを行うには、 Games.getEventsClient() メソッドを使用し、 現在のプレーヤーの GoogleSignInAccount を返します。Google Chat で プレーヤーのアカウント情報を取得します。詳しくは、 Android ゲームにログインします

イベントの送信

ゲームにコードを追加すると、Google Play Games サービスに、 特定のイベントが発生したときに 通知を受け取ることができます

予定の最新情報を送信するには、EventsClient.increment() に値 eventId と 0 以上の整数 incrementAmount

  • eventId は、最初に定義したときに Google Play Games サービスによって生成されます。 Google Play Console に保存され、Google Play Console でこのイベントを一意に識別するために使用されます。 説明します。
  • 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);
          }
        }
      });
}