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

इस गाइड में, 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);
          }
        }
      });
}