Android गेम में उपलब्धियां

Google Sign-In API के बंद होने के बाद, हम 2026 में Games v1 एसडीके को हटा रहे हैं. फ़रवरी 2025 के बाद, Google Play पर ऐसे गेम पब्लिश नहीं किए जा सकेंगे जो Games v1 एसडीके के साथ अभी-अभी इंटिग्रेट किए गए हैं. हमारा सुझाव है कि आप इसके बजाय, Games v2 SDK का इस्तेमाल करें.
गेम के v1 इंटिग्रेशन वाले मौजूदा टाइटल, कुछ सालों तक काम करते रहेंगे. हालांकि, हमारा सुझाव है कि आप जून 2025 से v2 पर माइग्रेट करें.
यह गाइड, Play की गेम सेवाओं के v1 एसडीके का इस्तेमाल करने के लिए है. एसडीके के नए वर्शन के बारे में जानकारी पाने के लिए, v2 का दस्तावेज़ देखें.

इस गाइड में, Android ऐप्लिकेशन में उपलब्धियां एपीआई इस्तेमाल करने का तरीका बताया गया है. इससे आपके गेम में उपलब्धियां अनलॉक की जा सकती हैं और उन्हें दिखाया जा सकता है. इन एपीआई को com.google.android.gms.games और com.google.android.gms.games.achievements पैकेज में देखा जा सकता है.

शुरू करने से पहले

अगर आपने अब तक ऐसा नहीं किया है, तो अचीवमेंट से जुड़े गेम कॉन्सेप्ट की समीक्षा करना आपके लिए फ़ायदेमंद हो सकता है.

Achievements API का इस्तेमाल करके कोडिंग शुरू करने से पहले:

  • Google Play services SDK टूल सेट अप करें गाइड में दिए गए निर्देशों का पालन करके, Google Play की गेम सेवाओं का इस्तेमाल करने के लिए, ऐप्लिकेशन इंस्टॉल करें और उसे सेट अप करें.
  • Google Play Console की गाइड में दिए गए निर्देशों का पालन करके, उन उपलब्धियों को तय करें जिन्हें आपको अपने गेम में अनलॉक या दिखाना है.
  • Android के सैंपल पेज पर जाकर, उपलब्धियों के कोड सैंपल डाउनलोड करें और उनकी समीक्षा करें.
  • क्वालिटी चेकलिस्ट में बताए गए सुझावों के बारे में जानें.

उपलब्धियां क्लाइंट पाना

उपलब्धियां एपीआई का इस्तेमाल शुरू करने के लिए, आपके गेम को सबसे पहले AchievementsClient ऑब्जेक्ट पाना होगा. इसके लिए, Games.getAchievementClient() तरीके को कॉल करें और मौजूदा प्लेयर के लिए गतिविधि और GoogleSignInAccount पास करें. खिलाड़ी के खाते की जानकारी वापस पाने का तरीका जानने के लिए, Android गेम में साइन-इन करना लेख पढ़ें.

उपलब्धियां अनलॉक करना

किसी उपलब्धि को अनलॉक करने के लिए, 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 Games Services, उपलब्धि के लिए ज़रूरी चरणों की संख्या पूरी होने पर, उसे अपने-आप अनलॉक कर देती है.

सबसे सही तरीका यह है कि strings.xml फ़ाइल में उपलब्धि आईडी तय किए जाएं, ताकि आपका गेम संसाधन आईडी के हिसाब से उपलब्धियों को रेफ़रंस कर सके. उपलब्धियों को अपडेट और लोड करने के लिए कॉल करते समय, यह पक्का करें कि एपीआई कोटा से ज़्यादा इस्तेमाल न हो. इसके लिए, इन सबसे सही तरीकों का पालन करें.

उपलब्धियां दिखाना

किसी खिलाड़ी की उपलब्धियां दिखाने के लिए, AchievementsClient.getAchievementsIntent() को कॉल करें. इससे आपको Intent मिलेगा. इसका इस्तेमाल करके, उपलब्धियों का डिफ़ॉल्ट यूज़र इंटरफ़ेस बनाया जा सकता है. इसके बाद, आपका गेम 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);
        }
      });
}

नीचे, डिफ़ॉल्ट उपलब्धियों के यूज़र इंटरफ़ेस (यूआई) का एक उदाहरण दिखाया गया है.