این راهنما به شما نشان میدهد که چگونه دادههای گیمپلی بازیکنان را برای تجزیه و تحلیل بازی با استفاده از APIهای رویدادهای ارائهشده توسط خدمات بازیهای Google Play جمعآوری کنید. APIها را میتوانید در com.google.android.gms.games.event
و com.google.android.gms.games
پیدا کنید.
قبل از شروع
اگر قبلاً این کار را نکردهاید، مرور مفاهیم بازی رویدادها برایتان مفید است.
قبل از شروع به کدنویسی با استفاده از API های رویداد:
- رویدادهای بازی خود را در کنسول Google Play تعریف کنید.
- توصیههای فهرست چک ورود به سیستم را دنبال کنید.
مشتری رویدادها را دریافت کنید
برای شروع استفاده از رویدادهای API، بازی شما باید ابتدا یک شی EventsClient
را دریافت کند. می توانید این کار را با فراخوانی متد Games.getEventsClient()
انجام دهید و فعالیت و GoogleSignInAccount
برای بازیکن فعلی ارسال کنید. برای یادگیری نحوه بازیابی اطلاعات حساب بازیکن، به ورود به سیستم در بازیهای Android مراجعه کنید.
رویدادها را ارسال کنید
میتوانید کدی را به بازی خود اضافه کنید تا هر زمان که رویداد مورد علاقه بازی شما رخ میدهد، خدمات بازیهای Google Play را مطلع کنید.
برای ارسال بهروزرسانی رویداد، EventsClient.increment()
را با مقدار eventId
و یک عدد صحیح incrementAmount
که مساوی یا بزرگتر از 0 است فراخوانی کنید.
-
eventId
زمانی که برای اولین بار رویداد را در کنسول Google Play تعریف میکنید توسط سرویسهای بازیهای Google Play تولید میشود و برای شناسایی منحصربهفرد این رویداد در بازی شما استفاده میشود. - می توانید از ورودی
incrementAmount
برای مشخص کردن پیشرفت کمی بازیکن در جهت تکمیل اهداف خاص بازی استفاده کنید. برای مثال، اگر رویدادی که بازی شما میخواهد ردیابی کند «شکست دادن 500 هیولا با چشم اشکال» باشد، مقدارincrementAmount
میتواند تعداد هیولایی باشد که بازیکن در یک نبرد کشته است.
در اینجا مثالی از نحوه ارسال یک رویداد با مقدار افزایشی 1 آورده شده است:
public void submitEvent(String eventId) { Games.getEventsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .increment(eventId, 1); }
رویدادها را بازیابی کنید
با فراخوانی EventsClient.load()
می توانید تمام داده های رویدادهای ذخیره شده در سرورهای Google را برای بازی خود بازیابی کنید. در فراخوانی روش، یک مقدار بولی ارسال کنید تا مشخص شود آیا خدمات بازیهای Google Play باید دادههای ذخیرهشده محلی را در دستگاه کاربر پاک کند یا خیر.
برای بازیابی دادههای رویدادهای خاصی که در کنسول Google Play تعریف کردهاید، با EventsClient.loadByIds()
تماس بگیرید و آرایهای از شناسههای رویداد را در پارامترهای ورودی ارسال کنید.
قطعه زیر نشان میدهد که چگونه میتوانید از خدمات بازیهای 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); } } }); }