Android गेम में इवेंट

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

इस गाइड में, Google Play Games Services के इवेंट एपीआई का इस्तेमाल करके, गेम के आंकड़ों के लिए खिलाड़ी के गेमप्ले का डेटा इकट्ठा करने का तरीका बताया गया है. एपीआई, com.google.android.gms.games.event और com.google.android.gms.games में मिल सकते हैं.

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

अगर आपने अब तक ऐसा नहीं किया है, तो इवेंट गेम के कॉन्सेप्ट की समीक्षा करें.

इवेंट एपीआई का इस्तेमाल करके कोड लिखने से पहले:

इवेंट क्लाइंट पाना

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

इवेंट सबमिट करना

अपने गेम में कोड जोड़कर, Google Play Games Services को सूचना दी जा सकती है, ताकि जब भी आपके गेम में कोई दिलचस्प इवेंट होता है, तो वह Google Play Games Services को सूचना दे सके.

इवेंट का अपडेट भेजने के लिए, eventId वैल्यू और 0 से ज़्यादा या उसके बराबर के पूर्णांक incrementAmount के साथ EventsClient.increment() को कॉल करें.

  • eventId को Google Play Games Services जनरेट करता है. ऐसा तब होता है, जब आपने Google Play Console में पहली बार इवेंट तय किया हो. इसका इस्तेमाल, आपके गेम में इस इवेंट की खास पहचान करने के लिए किया जाता है.
  • incrementAmount इनपुट का इस्तेमाल करके, गेम के किसी लक्ष्य को पूरा करने के लिए, खिलाड़ी की प्रगति की संख्या बताई जा सकती है. उदाहरण के लिए, अगर आपके गेम को '500 बग-आइड मॉन्स्टर को हराएं' इवेंट को ट्रैक करना है, तो incrementAmount वैल्यू उन मॉन्स्टर की संख्या हो सकती है जिन्हें प्लेयर ने एक ही लड़ाई में मारा है.

यहां एक उदाहरण दिया गया है, जिसमें 1 की बढ़ोतरी वाले इवेंट को सबमिट करने का तरीका बताया गया है:

public void submitEvent(String eventId) {
  Games.getEventsClient(this, GoogleSignIn.getLastSignedInAccount(this))
      .increment(eventId, 1);
}

इवेंट वापस लाना

EventsClient.load() को कॉल करके, अपने गेम के लिए Google के सर्वर में सेव किए गए सभी इवेंट का डेटा वापस पाया जा सकता है. 'कॉल करने का तरीका' में, एक बूलियन वैल्यू पास करें. इससे यह पता चलता है कि Google Play Games Services को उपयोगकर्ता के डिवाइस पर, कैश मेमोरी में सेव किया गया डेटा मिटाना चाहिए या नहीं.

Google Play Console में तय किए गए खास इवेंट का डेटा पाने के लिए, EventsClient.loadByIds() को कॉल करें और इनपुट पैरामीटर में इवेंट आईडी का कलेक्शन पास करें.

नीचे दिए गए स्निपेट में बताया गया है कि अपने गेम के सभी इवेंट की सूची के लिए, Google Play Games Services से क्वेरी कैसे की जा सकती है:

public void loadEvents() {
  Games.getEventsClient(this, GoogleSignIn.getLastSignedInAccount(this))
      .load(true)
      .addOnCompleteListener(new OnCompleteListener<AnnotatedData<EventBuffer>>() {
        @Override
        public void onComplete(@NonNull Task<AnnotatedData<EventBuffer>> task) {
          if (task.isSuccessful()) {
            // Process all the events.
            for (Event event : task.getResult().get()) {
              Log.d(TAG, "loaded event " + event.getName());
            }
          } else {
            // Handle Error
            Exception exception = task.getException();
            int statusCode = CommonStatusCodes.DEVELOPER_ERROR;
            if (exception instanceof ApiException) {
              ApiException apiException = (ApiException) exception;
              statusCode = apiException.getStatusCode();
            }
            showError(statusCode);
          }
        }
      });
}