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