PGS Recall API को अपने गेम में इंटिग्रेट करें

इस पेज पर, आपके गेम में Recall API को लागू करने का तरीका बताया गया है. इसमें पहली बार एपीआई की सुविधा के लिए अपने गेम सर्वर और क्लाइंट को सेट अप किया जा रहा है. इसके बाद, टोकन सेव और वापस लाने का तरीका क्या है.

गेम सर्वर का सेटअप

अपना गेम सर्वर सेट अप करें, ताकि Google के सर्वर पर Recall API कॉल किया जा सके.

Play की गेम सेवाओं से जुड़ा प्रोजेक्ट सेट अप करना

अगर आपने अभी तक साइन अप नहीं किया है, तो Google Play सेट अप करना में दिए गए निर्देशों का पालन करें गेम सेवाएं.

गेम के लिए सेवा खाता सेट अप करना

सेवा बनाने के लिए, दिए गए निर्देशों का पालन करें जोड़ें. आखिर में, आपके पास सेवा खाते के क्रेडेंशियल वाली JSON फ़ाइल होनी चाहिए.

Play की गेम सेवाओं के लिए, सर्वर साइड Java लाइब्रेरी डाउनलोड करें

नया google-api-services-games डाउनलोड करें लाइब्रेरी और इसे अपने सर्वर पर अपलोड कर सकता है.

Recall API कॉल के लिए क्रेडेंशियल तैयार करना

किसी दूसरे एपीआई के लिए, अपना एपीआई बनाने की तैयारी करना कॉल हमारा वीडियो देखें.

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.services.games.Games;
import com.google.api.services.games.GamesScopes;

// ...

GoogleCredential credential =
  GoogleCredential.fromStream(new FileInputStream("<credentials>.json"))
    .createScoped(Collections.singleton(GamesScopes.ANDROIDPUBLISHER));

Games gamesApi =
    new Games.Builder(httpTransport, JSON_FACTORY, credential).build();

गेम क्लाइंट का सेटअप

अपने गेम क्लाइंट को सेट अप करें, ताकि आपके सर्वर में इस्तेमाल किए गए रीकॉल सेशन आईडी वापस पाए जा सकें Google सर्वर से संपर्क करने के लिए.

Java SDK टूल

अपने क्लाइंट में Java SDK टूल सेट अप करना, और पक्का करें कि com.google.android.gms:play-services-games-v2:19.0.0 और आपके Gradle में com.google.android.gms:play-services-tasks:18.0.2 या उससे बाद का डेटा फ़ाइल से लिए जाते हैं.

Google के सर्वर से सही जानकारी देने के लिए, अपने गेम के सर्वर पर भेजे जाने वाले क्लाइंट SDK टूल से, सेशन आईडी को वापस लाएं:

Kotlin

PlayGames.getRecallClient(getActivity())
  .requestRecallAccess()
  .addOnSuccessListener { recallAccess -> val recallSessionId: String = recallAccess.getSessionId() }
  // Send the recallSessionId to your game server

Java

PlayGames.getRecallClient(getActivity())
  .requestRecallAccess()
  .addOnSuccessListener(
    recallAccess -> {
      String recallSessionId = recallAccess.getSessionId();
      // Send the recallSessionId to your game server
  });

अपने गेम सर्वर में Recall API का इस्तेमाल करना

अपने सर्वर और क्लाइंट को कॉन्फ़िगर करने के बाद, recallSessionID भेजा जा सकता है साथ ही, साइन अप की प्रोसेस शुरू करने के लिए, नीचे दिए गए दिशा-निर्देशों का पालन करें Recall टोकन सर्वर-साइड को सेव करने, वापस पाने या मिटाने के लिए Java API का इस्तेमाल करना.

स्टोर टोकन

LinkPersonaRequest ऑब्जेक्ट का इस्तेमाल करके, उपयोगकर्ता का पर्सोना और गेम टोकन सेव करें. Google को कॉल करने के लिए GoogleCredential का उपयोग करें APIs. 1:1 एलिमेंट की संख्या का पालन करने के लिए कंस्ट्रेंट, तो आप एक बार में सिर्फ़ एक पर्सोना को एक पीजीएस प्रोफ़ाइल से जोड़ें. सेट करें अगर यह PGS प्रोफ़ाइल पहले से ही किसी दूसरी प्रोफ़ाइल से लिंक की गई है, तो समस्या हल करने की नीति पर्सोना बनाएं.

इसके अलावा, टोकन पर टीटीएल भी सेट किया जा सकता है. इससे पता चलता है कि कितने समय का अंतर है तो टोकन Durations ऑब्जेक्ट है. इसे SetTtl() (जैसा कि नीचे दिखाया गया है) का इस्तेमाल करके सेट किया जा सकता है. इससे यह सेट होता है तरीके में बताई गई समयसीमा के खत्म होने की तारीख या setExpireTime(), इसकी मदद से टोकन की समयसीमा खत्म होने का सटीक समय सेट किया जा सकता है.

आपको पर्सोना और गेम टोकन को एन्क्रिप्ट (सुरक्षित) करना होगा. साथ ही, इनमें निजी तौर पर शामिल नहीं किया जा सकता पहचान करने लायक जानकारी हो. पर्सोना और टोकन स्ट्रिंग ज़्यादा से ज़्यादा 256 हो सकती हैं ज़्यादा से ज़्यादा 20 टोकन या पर्सोना इकट्ठा किए जा सकते हैं. हर गेम में अलग-अलग खिलाड़ियों को मिलेगा.

किसी खिलाड़ी को एक समय में, हर पर्सोना के लिए सिर्फ़ एक टोकन सेव किया जा सकता है. अगर आपको एक ही पर्सोना के साथ दूसरे टोकन को सेव करने के लिए, सिस्टम ओरिजनल टोकन को ओवरराइट कर देता है टोकन.

import com.google.api.services.games.Games.Recall.LinkPersona;
import com.google.protobuf.util.Durations;

// ...

Games gamesApi =
    new Games.Builder(httpTransport, JSON_FACTORY, credential).build();

String recallSessionId = ... // recallSessionID from game client
String persona = ... // encrypted opaque string, stable for in-game account
String token = ... // encrypted opaque string encoding the progress line

LinkPersonaRequest linkPersonaRequest =
  LinkPersonaRequest.newBuilder()
    .setSessionId(recallSessionId)
    .setPersona(persona)
    .setToken(token)
    .setCardinalityConstraint(ONE_PERSONA_TO_ONE_PLAYER)
    .setConflictingLinksResolutionPolicy(CREATE_NEW_LINK)
    .setTtl(Durations.fromDays(7)) // Optionally set TTL for token
    .build();

LinkPersonaResponse linkPersonaResponse =
  gamesApi.recall().linkPersona(linkPersonaRequest).execute();

if (linkPersonaResponse.getState() == LINK_CREATED) {
  // success
}

टोकन वापस पाएं

Recall टोकन वापस पाने के लिए, क्लाइंट से recallSessionId लें और इसे retrieveTokens एपीआई में भेजें:

import com.google.api.services.games.Games.Recall.RetrieveTokens;

// ...

String recallSessionId = ... // recallSessionID from game client

RetrievePlayerTokensResponse retrievePlayerTokensResponse =
  gamesApi.recall().retrieveTokens(recallSessionId).execute();

for (RecallToken recallToken : retrievePlayerTokensResponse.getTokens()) {
  String token recallToken.getToken();
  // Same string as was written in LinkPersona call
  // decrypt and recover in-game account
}

Recall टोकन मिटाएं

ज़रूरत पड़ने पर, नीचे दिए गए कॉल से Recall टोकन भी मिटाया जा सकता है:

import com.google.api.services.games.Games.Recall.UnlinkPersona;

// ...

String recallSessionId = ...
String persona = ...
String token = ...

Games gamesApi =
    new Games.Builder(httpTransport, JSON_FACTORY, credential).build();

UnlinkPersonaRequest unlinkPersonaRequest =
  UnlinkPersonaRequest.newBuilder()
    .setSessionId(recallSessionId)
    .setPersona(persona)
    // .setToken(token) - alternatively set token, but not both
    .build();

UnlinkPersonaResponse unlinkPersonaResponse =
  gamesApi.recall().unlinkPersona(unlinkPersonaRequest).execute();

// Confirm that the unlinking process completed successfully.
boolean unlinked = unlinkPersonaResponse.isUnlinked();

बिना प्रोफ़ाइल वाला मोड चालू करें

आपके पास सीमित Recall API की सुविधा चालू करने का विकल्प होता है उन उपयोगकर्ताओं के लिए जिनके पास PGS प्रोफ़ाइल नहीं हैं, यह तरीका अपनाएं:

  1. Play Developer में अपने PGS गेम प्रोजेक्ट के लिए बिना प्रोफ़ाइल के आइटम याद रखने की सुविधा चालू करें कंसोल. लेबल किए गए विकल्प को चुनें
  2. इस सेक्शन में बाद में बताई गई अन्य शर्तें देखें.
  3. अपने ऐप्लिकेशन में यह मेटाडेटा टैग जोड़ें मेनिफ़ेस्ट:
<meta-data
  android:name="com.google.android.gms.games.PROFILELESS_RECALL_ENABLED"
  android:value="true" />

अन्य शर्तें

Play की गेम सेवाओं की शर्तें सेवा का इस्तेमाल करते हैं, तो आप सहमति देते हैं कि अगर आप जिनके पास पीजीएस प्रोफ़ाइल नहीं है. इसकी मदद से, कॉन्टेंट शेयर किया जा सकता है असली उपयोगकर्ता का डेटा Google के पास मौजूद होता है. हालांकि, उसके पास Play की गेम सेवाओं वाली प्रोफ़ाइल नहीं होती, Google के साथ ऐसा डेटा शेयर करने से पहले, आपको असली उपयोगकर्ता को सूचना देकर, जिसमें बताया गया हो कि 1) Google के साथ डेटा शेयर करने की सुविधा चालू करने के लिए Play Games की खाता लिंक करने की सुविधा, 2) मैनेज करने के लिए सेटिंग की उपलब्धता जैसे, Play Games की सेटिंग से शेयर करना और 3) ऐसे डेटा की सुरक्षा के लिए Google की निजता नीति के तहत नीति और सही असली उपयोगकर्ता हासिल करना शेयर करने के लिए सहमति देना होगा, जो सभी लागू कानूनी ज़रूरतों के मुताबिक हो.