رویدادها در بازی های اندروید

این راهنما به شما نشان می‌دهد که چگونه داده‌های گیم‌پلی بازیکنان را برای تجزیه و تحلیل بازی با استفاده از APIهای رویدادهای ارائه‌شده توسط سرویس‌های بازی‌های Google Play جمع‌آوری کنید. APIها را می‌توانید در com.google.android.gms.games.event و com.google.android.gms.games پیدا کنید.

قبل از شروع

اگر قبلاً این کار را نکرده‌اید، مرور مفاهیم بازی رویدادها برایتان مفید است.

قبل از شروع به کدنویسی با استفاده از API های رویداد:

دریافت مشتری رویدادها

برای شروع استفاده از رویدادهای 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);
          }
        }
      });
}