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

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

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

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

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

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

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

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

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

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

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

  • eventId को Google Play की गेम सेवाएं जनरेट करती हैं. ऐसा तब होता है, जब 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 की गेम सेवाओं को उपयोगकर्ता के डिवाइस पर स्थानीय तौर पर कैश मेमोरी में सेव किया गया डेटा मिटाना चाहिए या नहीं.

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

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

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);
          }
        }
      });
}