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

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

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

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

ก่อนเริ่มเขียนโค้ดโดยใช้ Events API

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

หากต้องการเริ่มใช้ Events API เกมของคุณจะต้องได้รับออบเจ็กต์ EventsClient ก่อน ซึ่งทำได้โดยการเรียกใช้เมธอด PlayGames.getEventsClient() และส่งกิจกรรม

ส่งกิจกรรม

คุณสามารถเพิ่มโค้ดในเกมเพื่อแจ้งให้บริการเกมของ Play ทราบทุกครั้งที่มีเหตุการณ์ที่น่าสนใจเกิดขึ้นในเกม

หากต้องการส่งการอัปเดตเหตุการณ์ ให้เรียกใช้ EventsClient.increment() ด้วยค่า eventId และจํานวนเต็ม incrementAmount ที่เท่ากับหรือมากกว่า 0

  • eventId สร้างขึ้นโดยบริการ Play Games เมื่อคุณกำหนดเหตุการณ์ใน 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);
          }
        }
      });
}