คำแนะนำนี้จะแสดงวิธีรวบรวมข้อมูลการเล่นเกมของผู้เล่นสําหรับข้อมูลวิเคราะห์เกมโดยใช้ Events API ที่บริการ Google Play Games ให้บริการ โดยคุณจะดู 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 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); } } }); }