במדריך הזה מוסבר איך לאסוף נתוני גיימפליי של שחקנים לצורך ניתוח נתונים של המשחקים באמצעות ממשקי ה-API של אירועים.
שסופקו על ידי Google Play Games Services. תוכלו למצוא את ממשקי ה-API
com.google.android.gms.games.event
ו-com.google.android.gms.games
.
לפני שמתחילים
אם עדיין לא עשית זאת, מומלץ לעיין מושגים של משחקים לאירועים.
לפני שמתחילים לתכנת באמצעות ממשקי ה-API של האירועים:
הגדרת האירועים עבור משחק ב-Google Play Console.
פועלים לפי המלצות לרשימת משימות לכניסה.
אחזור של לקוח האירועים
כדי להתחיל להשתמש בממשקי ה-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); } } }); }