รางวัลพิเศษในเกม Android

คู่มือนี้แสดงวิธีใช้ API รางวัลพิเศษในแอปพลิเคชัน Android เพื่อปลดล็อกและแสดงรางวัลพิเศษในเกม โดยคุณจะดู API ได้ในแพ็กเกจ com.google.android.gms.games และ com.google.android.gms.games.achievements

ก่อนเริ่มต้น

การทบทวนแนวคิดของเกมรางวัลพิเศษอาจมีประโยชน์หากคุณยังไม่ได้อ่าน

ก่อนเริ่มเขียนโค้ดโดยใช้ Achievements API

รับไคลเอ็นต์รางวัลพิเศษ

เกมของคุณต้องได้รับออบเจ็กต์ AchievementsClient ก่อนจึงจะเริ่มใช้รางวัลพิเศษ API ได้ ซึ่งทำได้ด้วยการเรียกใช้เมธอด Games.getAchievementClient() และส่งข้อมูลในกิจกรรม รวมถึง GoogleSignInAccount สำหรับโปรแกรมเล่นปัจจุบัน ดูวิธีเรียกข้อมูลบัญชีผู้เล่นได้ที่การลงชื่อเข้าใช้ใน Android Games

ปลดล็อกรางวัลพิเศษ

หากต้องการปลดล็อกรางวัลพิเศษ ให้เรียกใช้เมธอด AchievementsClient.unlock() และส่งรหัสรางวัลพิเศษ

ข้อมูลโค้ดต่อไปนี้แสดงวิธีที่แอปปลดล็อกรางวัล

Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .unlock(getString(R.string.my_achievement_id));

หากรางวัลพิเศษเป็นประเภทเพิ่มขึ้นเรื่อยๆ (นั่นคือ ต้องผ่านหลายขั้นตอนเพื่อปลดล็อก) ให้เรียกใช้ AchievementsClient.increment() แทน

ข้อมูลโค้ดต่อไปนี้แสดงวิธีที่แอปเพิ่มคะแนนให้ผู้เล่น

Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .increment(getString(R.string.my_achievement_id), 1);

คุณไม่จำเป็นต้องเขียนโค้ดเพิ่มเติมเพื่อปลดล็อกรางวัลพิเศษนี้ เพราะบริการเกมของ Google Play จะปลดล็อกรางวัลพิเศษโดยอัตโนมัติเมื่อถึงขั้นตอนที่กำหนดไว้

แนวทางปฏิบัติแนะนำคือให้กำหนดรหัสรางวัลพิเศษในไฟล์ strings.xml เพื่อให้เกมอ้างอิงรางวัลพิเศษตามรหัสทรัพยากรได้ เมื่อเรียกใช้การอัปเดตและโหลดรางวัล ให้ทำตามแนวทางปฏิบัติแนะนำเหล่านี้ด้วยเพื่อหลีกเลี่ยงการใช้งานเกินโควต้า API

แสดงรางวัลพิเศษ

หากต้องการแสดงรางวัลของผู้เล่น ให้เรียก AchievementsClient.getAchievementsIntent() เพื่อรับ Intent เพื่อสร้างอินเทอร์เฟซผู้ใช้สำหรับรางวัลเริ่มต้น จากนั้นเกมจะแสดง UI ได้โดยเรียกใช้ startActivityForResult

ข้อมูลโค้ดต่อไปนี้แสดงวิธีที่แอปแสดงอินเทอร์เฟซผู้ใช้สำหรับรางวัลเริ่มต้น ในข้อมูลโค้ดนี้ RC_ACHIEVEMENT_UI คือจำนวนเต็มที่กำหนดเองซึ่งเกมใช้เป็นรหัสคำขอ

private static final int RC_ACHIEVEMENT_UI = 9003;

private void showAchievements() {
  Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
      .getAchievementsIntent()
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_ACHIEVEMENT_UI);
        }
      });
}

ตัวอย่าง UI ของรางวัลเริ่มต้นแสดงอยู่ด้านล่าง