Bu kılavuzda, Google Play Games Hizmetleri tarafından sağlanan etkinlik API'lerini kullanarak oyun analizleri için oyuncu oyun içi verilerini nasıl toplayacağınız açıklanmaktadır. API'leri com.google.android.gms.games.event
ve com.google.android.gms.games
'de bulabilirsiniz.
Başlamadan önce
Henüz yapmadıysanız etkinlik oyun kavramlarını incelemeniz faydalı olabilir.
Etkinlik API'lerini kullanarak kodlamaya başlamadan önce:
- Google Play Console'da oyununuzla ilgili etkinlikleri tanımlayın.
- Oturum açma yapılacaklar listesindeki önerileri uygulayın.
Etkinlik istemcisini al
Etkinlik API'lerini kullanmaya başlamak için oyununuzun önce bir EventsClient
nesnesi alması gerekir. Bunu, Games.getEventsClient()
yöntemini çağırıp etkinliği ve mevcut oynatıcı için GoogleSignInAccount
öğesini ileterek yapabilirsiniz. Oyuncu hesabı bilgilerini nasıl alacağınızı öğrenmek için Android Oyunlar'da oturum açma başlıklı makaleyi inceleyin.
Etkinlikleri gönderme
Oyununuzla ilgili önemli bir etkinlik olduğunda Google Play Games Hizmetleri'ni bilgilendirmek için oyununuza 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()
işlevini çağırın.
eventId
, etkinliği Google Play Console'da ilk kez tanımladığınızda Google Play Games Hizmetleri tarafından oluşturulur ve bu etkinliği oyununuzda benzersiz şekilde tanımlamak için kullanılır.- Oyuncunun oyuna özel bir hedefi tamamlamaya yönelik niceliksel ilerlemesini belirtmek için
incrementAmount
girişini kullanabilirsiniz. Örneğin, oyununuzun izlemek istediği etkinlik '500 böcek gözlü canavarı yen' iseincrementAmount
değeri, oyuncunun tek bir savaşta öldürdüğü canavar sayısı olabilir.
Aşağıda, artış miktarı 1 olan bir etkinliğin nasıl gönderileceğine dair bir örnek verilmiştir:
public void submitEvent(String eventId) { Games.getEventsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .increment(eventId, 1); }
Etkinlikleri alma
EventsClient.load()
işlevini çağırarak oyununuz için Google'ın sunucularında depolanan tüm etkinlik verilerini alabilirsiniz. Yöntem çağrısında, Google Play Games Hizmetleri'nin kullanıcının cihazındaki yerel olarak önbelleğe alınmış verileri temizlemesinin gerekip gerekmediğini belirtmek için bir boole değeri iletin.
Google Play Console'da tanımladığınız belirli etkinliklerle ilgili verileri almak için EventsClient.loadByIds()
işlevini çağırın ve giriş parametrelerine bir etkinlik kimlikleri dizisi gönderin.
Aşağıdaki snippet'te, oyununuzla ilgili tüm etkinliklerin listesi için Google Play Games Hizmetleri'ni nasıl sorgulayabileceğiniz gösterilmektedir:
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); } } }); }