กิจกรรมใน Android Games

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

ข้อควรทราบก่อนที่จะเริ่มต้น

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

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

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

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

กําลังส่งกิจกรรม

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

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

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

ต่อไปนี้เป็นตัวอย่างวิธีการส่งกิจกรรมที่มีเลขที่เพิ่มขึ้น 1

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

กําลังเรียกเหตุการณ์

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

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

ข้อมูลโค้ดต่อไปนี้อธิบายวิธีค้นหาบริการเกมของ Google 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);
          }
        }
      });
}