กิจกรรมสำหรับเกม Android

คู่มือนี้แสดงวิธีรวบรวมข้อมูลเกมเพลย์ของผู้เล่นเพื่อการวิเคราะห์เกมโดยใช้ Event 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 สร้างขึ้นโดยบริการเกมของ Play เมื่อคุณระบุเป็นครั้งแรก เหตุการณ์ใน Google Play Console และใช้เพื่อระบุกิจกรรมนี้อย่างไม่ซ้ำกันใน เกมของคุณ
  • คุณสามารถใช้อินพุต incrementAmount เพื่อระบุความคืบหน้าในเชิงปริมาณของผู้เล่น การทำเป้าหมายเฉพาะเกมให้สำเร็จ ตัวอย่างเช่น หากเหตุการณ์ เกมต้องการติดตามคือ "เอาชนะสัตว์ประหลาดตาบัก 500 ตัว" ค่า incrementAmount อาจเป็นค่า จำนวนมอนสเตอร์ที่ผู้เล่นฆ่าในการต่อสู้ครั้งเดียว

ตัวอย่างวิธีส่งเหตุการณ์ที่มีจํานวนเพิ่มขึ้นเป็น 1 มีดังนี้

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

เรียกข้อมูลเหตุการณ์

คุณสามารถดึงข้อมูลเหตุการณ์ทั้งหมดที่จัดเก็บในเซิร์ฟเวอร์ของ Google สำหรับเกมของคุณได้โดย กำลังโทรหา EventsClient.load() ใน ให้เมธอด ส่งผ่านค่าบูลีนเพื่อระบุว่าบริการเกมของ Play ควรล้างในเครื่องหรือไม่ ข้อมูลที่แคชไว้ ในอุปกรณ์ของผู้ใช้

หากต้องการเรียกดูข้อมูลสำหรับเหตุการณ์หนึ่งๆ ที่คุณกำหนดไว้ใน Google Play Console โปรดโทร 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);
          }
        }
      });
}