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

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

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

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

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

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

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

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

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

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

इवेंट का अपडेट भेजने के लिए, 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);
          }
        }
      });
}