คู่มือนี้แสดงวิธีรวบรวมข้อมูลผู้เล่นสําหรับการวิเคราะห์เกมโดยใช้ API เหตุการณ์ที่บริการเกมของ Google Play ระบุไว้ API จะอยู่ใน com.google.android.gms.games.event
และ com.google.android.gms.games
ข้อควรทราบก่อนที่จะเริ่มต้น
คุณควรอ่านแนวคิดของเกมของเหตุการณ์หากยังไม่ได้อ่าน
ก่อนที่จะเริ่มเขียนโค้ดโดยใช้ API เหตุการณ์ ให้ทําดังนี้
- กําหนดเหตุการณ์สําหรับเกมใน Google Play Console
- ทําตามรายการตรวจสอบรายการตรวจสอบการลงชื่อเข้าใช้
การรับไคลเอ็นต์เหตุการณ์
เกมจะต้องได้รับออบเจ็กต์ 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); } } }); }