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

คู่มือนี้จะแสดงวิธีรวบรวมข้อมูลการเล่นเกมของผู้เล่นเพื่อใช้ในการวิเคราะห์เกมโดยใช้ Events API ที่บริการเกมของ Google Play มีให้ คุณจะพบ API ได้ในแพ็กเกจ com.google.android.gms.games.event และ com.google.android.gms.games

ก่อนเริ่มต้น

หากยังไม่ได้ดำเนินการ คุณอาจพบว่าการอ่านแนวคิดเกี่ยวกับเหตุการณ์ ของเกมมีประโยชน์

ก่อนเริ่มเขียนโค้ดโดยใช้ Events API ให้ทำดังนี้

  • กำหนดเหตุการณ์สำหรับเกมใน Google Play Console

  • ทำตามคำแนะนำในรายการตรวจสอบการลงชื่อเข้าใช้

รับไคลเอ็นต์เหตุการณ์

หากต้องการเริ่มใช้ Events API เกมของคุณต้องได้รับออบเจ็กต์ EventsClient ก่อน คุณทำได้โดยการเรียกใช้เมธอด PlayGames.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);
          }
        }
      });
}