กิจกรรมในเกม Android

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

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

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

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

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

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

ส่งกิจกรรม

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

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

  • eventId สร้างขึ้นโดยบริการ Google Play Games เมื่อคุณกำหนดเหตุการณ์ใน Google Play Console เป็นครั้งแรก และจะใช้เพื่อระบุเหตุการณ์นี้ในเกมของคุณโดยไม่ซ้ำกัน
  • คุณใช้อินพุต incrementAmount เพื่อระบุความคืบหน้าเชิงปริมาณของผู้เล่นในการบรรลุเป้าหมายเฉพาะเกมบางเกมได้ ตัวอย่างเช่น หากเหตุการณ์ที่เกมต้องการติดตามคือ 'เอาชนะมอนสเตอร์ตาโป่ง 500 ตัว' ค่า incrementAmount อาจเป็นจํานวนมอนสเตอร์ที่ผู้เล่นฆ่าในการต่อสู้ครั้งเดียว

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

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

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

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

หากต้องการเรียกข้อมูลสําหรับเหตุการณ์ที่เฉพาะเจาะจงซึ่งคุณกําหนดไว้ใน Google Play Console ให้เรียกใช้ EventsClient.loadByIds() และส่งอาร์เรย์รหัสเหตุการณ์ในพารามิเตอร์อินพุต

ข้อมูลโค้ดต่อไปนี้แสดงวิธีค้นหาบริการเกมของ Google Play เพื่อดูรายการเหตุการณ์ทั้งหมดของเกม

public void loadEvents() {
  Games.getEventsClient(this, GoogleSignIn.getLastSignedInAccount(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);
          }
        }
      });
}