الإنجازات في ألعاب Android

يوضّح لك هذا الدليل كيفية استخدام واجهات برمجة تطبيقات الإنجازات في تطبيقات Android لإلغاء تأمين الإنجازات في لعبتك وعرضها. يمكن العثور على واجهات برمجة التطبيقات في حزم com.google.android.gms.games وcom.google.android.gms.games.achievements.

قبل البدء

إذا لم تكن قد فعلت ذلك من قبل، قد يكون من المفيد مراجعة مفاهيم ألعاب الإنجازات.

قبل البدء في الترميز باستخدام واجهة برمجة تطبيقات الإنجازات:

الحصول على عميل لإنجازات

لبدء استخدام واجهة برمجة التطبيقات لإنجازات، يجب أن تحصل لعبتك أولاً على كائن AchievementsClient. ويمكنك إجراء ذلك من خلال استدعاء طريقة Games.getAchievementClient() وتمرير النشاط.

فتح قفل الإنجازات

لإلغاء قفل أحد الإنجازات، يمكنك استدعاء طريقة AchievementsClient.unlock() وتمرير رقم تعريف الإنجاز.

يعرض مقتطف الرمز التالي كيف يمكن لتطبيقك فتح قفل الإنجازات:

PlayGames.getAchievementsClient(this).unlock(getString(R.string.my_achievement_id));

إذا كان الإنجاز من النوع التزايدي (أي يتطلّب فتح قفله عدة خطوات)، يمكنك طلب AchievementsClient.increment() بدلاً من ذلك.

يعرض مقتطف الشفرة التالي كيف يمكن لتطبيقك زيادة إنجازات اللاعب:

PlayGames.getAchievementsClient(this).increment(getString(R.string.my_achievement_id), 1);

لست بحاجة إلى كتابة رمز إضافي لفتح الإنجاز، حيث إنّ خدمات ألعاب Google Play تؤدي تلقائيًا إلى فتح قفل الإنجاز بعد الوصول إلى عدد الخطوات المطلوبة.

من الممارسات الجيدة تحديد أرقام تعريف الإنجازات في ملف strings.xml، بحيث يمكن للعبة الإشارة إلى الإنجازات حسب رقم تعريف المورد. عند إجراء مكالمات لتحديث وتحميل الإنجازات، تأكد أيضًا من اتباع أفضل الممارسات لتجنب تجاوز حصة واجهة برمجة التطبيقات.

عرض الإنجازات

لعرض إنجازات اللاعب، اتصل بالرقم AchievementsClient.getAchievementsIntent() للحصول على Intent لإنشاء واجهة مستخدم الإنجازات الافتراضية. ويمكن للعبة بعد ذلك إظهار واجهة المستخدم من خلال الاتصال على startActivityForResult.

يعرض مقتطف الرمز التالي طريقة عرض تطبيقك لواجهة مستخدم الإنجاز التلقائية. في المقتطف، RC_ACHIEVEMENT_UI هو عدد صحيح عشوائي تستخدمه اللعبة كرمز الطلب.

private static final int RC_ACHIEVEMENT_UI = 9003;

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

في ما يلي مثال على واجهة مستخدم الإنجازات التلقائية.