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

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

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

คุณอาจต้องอ่านแนวคิดเกี่ยวกับรางวัลในเกม หากยังไม่ได้ดำเนินการ

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

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

หากต้องการเริ่มใช้ API รางวัล เกมของคุณจะต้องได้รับออบเจ็กต์ AchievementsClient ก่อน ซึ่งทำได้โดยเรียกใช้เมธอด 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 ของรางวัลเริ่มต้นแสดงอยู่ด้านล่าง