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

این راهنما به شما نشان می‌دهد که چگونه داده‌های گیم‌پلی بازیکنان را برای تجزیه و تحلیل بازی با استفاده از 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);
          }
        }
      });
}