אירועים של משחקי Android

במדריך הזה מוסבר איך לאסוף נתוני גיימפליי של שחקנים לצורך ניתוח נתונים של המשחקים באמצעות ממשקי ה-API של אירועים. שסופקו על ידי Google Play Games Services. תוכלו למצוא את ממשקי ה-API com.google.android.gms.games.event ו-com.google.android.gms.games.

לפני שמתחילים

אם עדיין לא עשית זאת, מומלץ לעיין מושגים של משחקים לאירועים.

לפני שמתחילים לתכנת באמצעות ממשקי ה-API של האירועים:

אחזור של לקוח האירועים

כדי להתחיל להשתמש בממשקי ה-API של אירועים, המשחק שלך צריך קודם לקבל EventsClient לאובייקט. אפשר לעשות זאת באמצעות קריאה ל Games.getEventsClient() ומעבירים את פעילות.

שליחת אירועים

אפשר להוסיף קוד למשחק כדי להודיע ל-Play Games Services בכל פעם שהתרחש בו עניין במשחק שלך.

כדי לשלוח עדכון לאירוע, צריך להתקשר למספר EventsClient.increment() עם הערך eventId ומספר השלם incrementAmount שווה ל- או גדול מ-0.

  • המשחק eventId נוצר על ידי Play Games Services כשמגדירים בפעם הראשונה האירוע ב-Google Play Console ומשמש לזיהוי ייחודי של האירוע הזה במשחק שלך.
  • אפשר להשתמש בקלט incrementAmount כדי לציין את ההתקדמות הכמותית של השחקן לקראתו השלמת יעדים ספציפיים למשחק. לדוגמה, אם האירוע משחק שרוצה לעקוב אחריו הוא 'Defeat 500 Bug-eyed monsters', הערך incrementAmount יכול להיות מספר המפלצות שהשחקן הרג בקרב אחד.

דוגמה לאופן שבו שולחים אירוע עם סכום מצטבר של 1:

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

אחזור אירועים

אפשר לאחזר את כל נתוני האירועים שמאוחסנים בשרתי Google עבור המשחק שלך, על ידי התקשרות אל EventsClient.load(). ב method, מעבירים ערך בוליאני כדי לציין אם Play Games Services צריך לנקות את של נתונים שנשמרו במטמון במכשיר של המשתמש.

כדי לאחזר נתונים של אירועים ספציפיים שהגדרתם ב-Google Play Console, קוראים לפונקציה הפונקציה EventsClient.loadByIds() ומעבירה במערך של מזהי אירועים בפרמטרים של הקלט.

קטע הקוד הבא מראה איך אפשר לשלוח שאילתות לגבי Play Games Services עבור רשימה של כל האירועים עבור המשחק שלך:

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