คู่มือนี้จะแสดงวิธีรวบรวมข้อมูลการเล่นเกมของผู้เล่นเพื่อใช้ในการวิเคราะห์เกมโดยใช้ 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); } } }); }