Android Oyunlarındaki Etkinlikler

Bu kılavuzda, Google Play oyun hizmetleri tarafından sağlanan etkinlik API'leri kullanılarak 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 sayfalarında bulabilirsiniz.

Başlamadan önce

Henüz yapmadıysanız etkinlik oyunu kavramlarını incelemeniz faydalı olabilir.

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

Etkinlikler istemcisini edinme

Etkinlik API'lerini kullanmaya başlamak için oyununuzun öncelikle bir EventsClient nesnesi edinmesi gerekir. Bunu yapmak için Games.getEventsClient() yöntemini çağırıp etkinliği iletebilirsiniz.

Etkinlik gönderme

Oyununuzla ilgili bir olay meydana geldiğinde Google Play oyun hizmetlerini bilgilendirmek için oyununuza kod ekleyebilirsiniz.

Bir etkinlik güncellemesi göndermek için EventsClient.increment() değerini eventId değeriyle ve 0 veya daha büyük bir tam sayı incrementAmount ile arayın.

  • eventId, Google Play oyun hizmetlerinde ilk olarak etkinliği Google Play Console'da tanımladığınızda oluşturulur ve oyununuzda bu etkinliği benzersiz şekilde tanımlamak için kullanılır.
  • incrementAmount girişini, oyuncunun oyuna özgü bazı hedefleri tamamlamaya ilişkin sayısal ilerlemesini belirtmek için kullanabilirsiniz. Örneğin, oyununuzun izlemek istediği etkinlik "500 böcek gözlü canavarları yen" ise oyuncunun tek bir savaşta öldürdüğü canavarların sayısı incrementAmount değeri olabilir.

Aşağıda, 1'lik artışla bir etkinliği nasıl göndereceğinize dair bir örnek verilmiştir:

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

Etkinlik alma

EventsClient.load() çağırarak Google'ın sunucularında depolanan tüm etkinlik verilerini oyununuz için alabilirsiniz. Yöntem çağrısında, Google Play oyun hizmetlerinin kullanıcının cihazındaki yerel olarak önbelleğe alınan verileri temizlemesi gerekip gerekmediğini belirtmek için bir boole değeri iletin.

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

Aşağıdaki snippet'te, oyununuzla ilgili tüm etkinliklerin listesi için Google Play oyun hizmetlerini 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);
          }
        }
      });
}