คู่มือนี้จะแสดงวิธีใช้ลีดเดอร์บอร์ด API ในแอปพลิเคชัน Android เพื่อสร้างลีดเดอร์บอร์ดแบบภาพ บันทึกคะแนนของผู้เล่น และเปรียบเทียบคะแนนกับคะแนนของผู้เล่นจากเซสชันเกมก่อนหน้า โดยคุณจะดู API ได้ในแพ็กเกจ com.google.android.gms.games
และ com.google.android.gms.games.leaderboards
ก่อนเริ่มต้น
หากยังไม่ได้อ่าน โปรดดูแนวคิดเกมสำหรับตารางอันดับ
ก่อนเริ่มเขียนโค้ดโดยใช้ Leaderboards API
- ทำตามวิธีการติดตั้งและตั้งค่าแอปเพื่อใช้บริการเกมของ Google Play ในคู่มือตั้งค่า SDK บริการ Google Play
- กําหนดลีดเดอร์บอร์ดที่ต้องการให้เกมแสดงหรืออัปเดตโดยทําตามวิธีการในคู่มือ Google Play Console
- ดาวน์โหลดและตรวจสอบตัวอย่างโค้ดลีดเดอร์บอร์ดในหน้าตัวอย่างของ Android
- ทำความคุ้นเคยกับคำแนะนำที่อธิบายไว้ใน รายการตรวจสอบคุณภาพ
รับไคลเอ็นต์ลีดเดอร์บอร์ด
เกมของคุณต้องได้รับออบเจ็กต์ LeaderboardsClient
ก่อนจึงจะเริ่มใช้ API ลีดเดอร์บอร์ดได้
ซึ่งทำได้โดยการเรียกใช้เมธอด Games.getLeadeboardsClient()
และส่งกิจกรรมและ GoogleSignInAccount
ของเพลเยอร์ปัจจุบัน ดูวิธีเรียกข้อมูลบัญชีผู้เล่นได้ที่การลงชื่อเข้าใช้ใน Android Games
อัปเดตคะแนนของผู้เล่น
เมื่อคะแนนของผู้เล่นเปลี่ยนแปลง (เช่น เมื่อผู้เล่นเล่นเกมจบ) เกมจะอัปเดตคะแนนบนลีดเดอร์บอร์ดโดยเรียกใช้ LeaderboardsClient.submitScore()
และส่งรหัสลีดเดอร์บอร์ดและค่าคะแนนดิบ
ข้อมูลโค้ดต่อไปนี้แสดงวิธีที่แอปอัปเดตคะแนนของผู้เล่นได้
Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .submitScore(getString(R.string.leaderboard_id), 1337);
แนวทางปฏิบัติแนะนำคือให้กำหนดรหัสลีดเดอร์บอร์ดในไฟล์ strings.xml
เพื่อให้เกมอ้างอิงลีดเดอร์บอร์ดตามรหัสทรัพยากรได้ เมื่อเรียกใช้เพื่ออัปเดตและโหลดคะแนนของผู้เล่น โปรดทำตามแนวทางปฏิบัติแนะนำเหล่านี้ด้วยเพื่อไม่ให้เกินโควต้า API
แสดงลีดเดอร์บอร์ด
หากต้องการแสดงลีดเดอร์บอร์ด ให้เรียกใช้ LeaderboardsClient.getLeaderboardIntent()
เพื่อรับ Intent
เพื่อสร้างอินเทอร์เฟซผู้ใช้ลีดเดอร์บอร์ดเริ่มต้น จากนั้นเกมจะแสดง UI ได้โดยเรียกใช้ startActivityForResult
ข้อมูลโค้ดต่อไปนี้แสดงวิธีที่แอปอัปเดตคะแนนของผู้เล่นเกม ในข้อมูลโค้ด RC_LEADERBOARD_UI
คือจำนวนเต็มที่กำหนดเองสำหรับรหัสคำขอ
private static final int RC_LEADERBOARD_UI = 9004; private void showLeaderboard() { Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .getLeaderboardIntent(getString(R.string.leaderboard_id)) .addOnSuccessListener(new OnSuccessListener<Intent>() { @Override public void onSuccess(Intent intent) { startActivityForResult(intent, RC_LEADERBOARD_UI); } }); }
โปรดทราบว่าแม้ว่าจะไม่มีการแสดงผลลัพธ์ แต่เราต้องใช้ startActivityForResult
เพื่อให้ API รับข้อมูลระบุตัวตนของแพ็กเกจการโทรได้ ตัวอย่าง UI ของตารางอันดับเริ่มต้นแสดงอยู่ด้านล่าง