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

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

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

หากยังไม่ได้ดำเนินการ คุณอาจต้องดูแนวคิดเกี่ยวกับกิจกรรม เกม

ก่อนเริ่มเขียนโค้ดโดยใช้ API เหตุการณ์ ให้ทำดังนี้

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

หากต้องการเริ่มใช้ 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);
          }
        }
      });
}