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

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

قبل از شروع

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

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

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

برای شروع استفاده از رویدادهای API، بازی شما باید ابتدا یک شی EventsClient را دریافت کند. شما می توانید این کار را با فراخوانی متد Games.getEventsClient() و عبور از اکتیویتی انجام دهید.

رویدادها را ارسال کنید

می توانید کدی را به بازی خود اضافه کنید تا هر زمان که رویداد مورد علاقه بازی شما رخ می دهد، خدمات بازی های Play را مطلع کنید.

برای ارسال به‌روزرسانی رویداد، EventsClient.increment() را با مقدار eventId و یک عدد صحیح incrementAmount که مساوی یا بزرگتر از 0 است فراخوانی کنید.

  • eventId هنگامی که برای اولین بار رویداد را در کنسول Google Play تعریف می‌کنید توسط خدمات بازی‌های Play ایجاد می‌شود و برای شناسایی منحصربه‌فرد این رویداد در بازی شما استفاده می‌شود.
  • می توانید از ورودی incrementAmount برای مشخص کردن پیشرفت کمی بازیکن در جهت تکمیل اهداف خاص بازی استفاده کنید. برای مثال، اگر رویدادی که بازی شما می‌خواهد ردیابی کند «شکست دادن 500 هیولا با چشم اشکال» باشد، مقدار incrementAmount می‌تواند تعداد هیولایی باشد که بازیکن در یک نبرد کشته است.

در اینجا مثالی از نحوه ارسال یک رویداد با مقدار افزایشی 1 آورده شده است:

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

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

با فراخوانی EventsClient.load() می توانید تمام داده های رویدادهای ذخیره شده در سرورهای Google را برای بازی خود بازیابی کنید. در فراخوانی روش، یک مقدار بولی ارسال کنید تا مشخص شود آیا خدمات بازی‌های Play باید داده‌های ذخیره‌شده محلی را در دستگاه کاربر پاک کند یا خیر.

برای بازیابی داده‌های رویدادهای خاصی که در کنسول Google Play تعریف کرده‌اید، با EventsClient.loadByIds() تماس بگیرید و آرایه‌ای از شناسه‌های رویداد را در پارامترهای ورودی ارسال کنید.

قطعه زیر نشان می‌دهد که چگونه می‌توانید از خدمات بازی‌های Play برای لیست همه رویدادهای بازی خود پرس و جو کنید:

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);
          }
        }
      });
}