Android oyunları için etkinlikler

Bu kılavuzda, Google Play Games Hizmetleri tarafından sağlanan etkinlik API'lerini kullanarak oyun analizleri için oyuncu oyun verilerinin nasıl toplanacağı gösterilmektedir. API'leri com.google.android.gms.games.event ve com.google.android.gms.games üzerinde bulabilirsiniz.

Başlamadan önce

Henüz yapmadıysanız etkinliklerle ilgili oyun konseptlerini incelemeniz faydalı olabilir.

Etkinlik API'lerini kullanarak kodlamaya başlamadan önce:

Etkinlik istemcisini alma

Etkinlik API'lerini kullanmaya başlamak için oyununuzun önce bir EventsClient nesnesi edinmesi gerekir. Bunu, Games.getEventsClient() yöntemini çağırarak ve etkinliği ileterek yapabilirsiniz.

Etkinlikleri gönder

Oyununuzla ilgili bir etkinlik gerçekleştiğinde Play Games Hizmetleri'ne bildirimde bulunmak için oyununuza bir kod ekleyebilirsiniz.

Etkinlik güncellemesi göndermek için eventId değeri ve 0'a eşit veya 0'dan büyük bir tam sayı incrementAmount ile EventsClient.increment() çağrısı yapın.

  • eventId, etkinliği Google Play Console'da ilk kez tanımladığınızda Play Games Hizmetleri tarafından oluşturulur ve bu etkinliği oyununuzda benzersiz bir şekilde tanımlamak için kullanılır.
  • Oyuncunun oyuna özel bazı hedefleri tamamlamaya yönelik niceliksel ilerlemesini belirtmek için incrementAmount girişini kullanabilirsiniz. Örneğin, oyununuzun izlemek istediği etkinlik "Böcek gözlü 500 canavarı yenin" ise incrementAmount değeri, oyuncunun tek bir savaşta öldürdüğü canavarların sayısı olabilir.

Aşağıda, 1'lik artış miktarıyla bir etkinliğin nasıl gönderileceğine ilişkin bir örnek verilmiştir:

public void submitEvent(String eventId) {
  PlayGames.getEventsClient(this)
      .increment(eventId, 1);
}

Etkinlikleri alma

Oyununuz için Google'ın sunucularında depolanan tüm etkinlik verilerini EventsClient.load() yöntemini çağırarak alabilirsiniz. Play Games Hizmetleri'nin, kullanıcının cihazında yerel olarak önbelleğe alınmış verileri temizlemesi gerekip gerekmediğini belirtmek için yöntem çağrısında bir boole değeri iletin.

Google Play Console'da tanımladığınız belirli etkinliklerin verilerini almak için EventsClient.loadByIds() yöntemini çağırın ve giriş parametrelerinde bir etkinlik kimliği dizisi iletin.

Aşağıdaki snippet'te oyununuzla ilgili tüm etkinliklerin listesi için Play Oyun Hizmetleri'ni nasıl sorgulayabileceğiniz gösterilmektedir:

public void loadEvents() {
  PlayGames.getEventsClient(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);
          }
        }
      });
}