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

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

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

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

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

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

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

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

3. PlayGamesServices के लिए, सर्वर साइड Java लाइब्रेरी डाउनलोड करें

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

4. 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 को ज़रूर शामिल करें और com.google.android.gms:play-services-tasks:18.0.2 या इससे ज़्यादा Gradle फ़ाइल.

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

Unity SDK

अगर इसे अभी तक पूरा नहीं किया गया है, तो अपने Google खाते में Unity SDK क्लाइंट में सेव किया जाता है.

Google के सर्वर से सही जानकारी देने के लिए, आपको इन चीज़ों की ज़रूरत होगी क्लाइंट SDK टूल से, रीकॉल सेशन आईडी का अनुरोध करके उसे अपने गेम के सर्वर.

PlayGamesPlatform.Instance.RequestRecallAccess(
    recallAccess => {
        string recallSessionId = recallAccess.sessionId;
        // Send the recallSessionId to your game server
    });

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

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

स्टोर टोकन

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

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

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

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

import com.google.api.services.games.Games.Recall.LinkPersona;
import com.google.api.services.games.model.LinkPersonaRequest;
import com.google.api.services.games.model.LinkPersonaResponse;
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 टोकन भी शामिल हैं.
  • आखिरी टोकन, जो डेवलपर खाते के सभी गेम में सेव होता है.
  • डेवलपर खाते के मालिकाना हक वाले गेम की सूची दी गई है, इसलिए सभी Recall टोकन दिए गए हैं गेम से जुड़ी होती हैं.

गेम के स्कोप वाले Recall टोकन

मौजूदा गेम से Recall टोकन पाने के लिए, recallSessionId को क्लाइंट से फ़ेच करना और उसे retrieveTokens एपीआई में पास करना:

import com.google.api.services.games.Games;
import com.google.api.services.games.model.RetrievePlayerTokensResponse;
import com.google.api.services.games.model.RecallToken;

// ...

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 टोकन

डेवलपर के मालिकाना हक वाले सभी गेम में सेव किया गया सबसे हाल का टोकन पाने के लिए साइन इन किया है, तो आपको recallSessionId डाउनलोड करना होगा क्लाइंट से डाउनलोड कर सकता है और उसे lastTokenFromAllDeveloperGames API में इस तरह से पास कर सकता है: जो नीचे दिए गए कोड स्निपेट में दिखाए गए हैं. रिस्पॉन्स के तौर पर, इन चीज़ों की जांच की जा सकती है ऐप्लिकेशन आईडी साइन इन करने के लिए इस टोकन का इस्तेमाल करें.

import com.google.api.services.games.Games;
import com.google.api.services.games.model.RetrieveDeveloperGamesLastPlayerTokenResponse;
import com.google.api.services.games.model.GamePlayerToken;
import com.google.api.services.games.model.RecallToken;

// ...

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

RetrieveDeveloperGamesLastPlayerTokenResponse response =
        gamesApi.recall().lastTokenFromAllDeveloperGames(recallSessionId)
        .execute();

if (response.hasGamePlayerToken()) {
    GamePlayerToken gamePlayerToken = response.getGamePlayerToken();

    // The ID of the application that the token is associated with.
    String applicationId = gamePlayerToken.getApplicationId();

    // Same string as was written in LinkPersona call.
    RecallToken recallToken = gamePlayerToken.getRecallToken();

    // Decrypt and recover in-game account.
}

डेवलपर खाते के मालिकाना हक वाले गेम की सूची में मौजूद सभी Recall टोकन

गेम की सूची से जुड़े सभी टोकन हासिल करने के लिए, जिनका मालिकाना हक किसके पास है तो recallSessionId और उसे gamesPlayerTokens API में पास करें. सप्लाई के लिए ऐप्लिकेशन आईडी की सूची.

import com.google.api.services.games.Games;
import com.google.api.services.games.model.RetrieveGamesPlayerTokensResponse;
import com.google.api.services.games.model.GamePlayerToken;
import com.google.api.services.games.model.RecallToken;

// ...

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

// Application IDs for which you would like to retrieve the recall tokens.
List<String> applicationIds = ...

RetrieveGamesPlayerTokensResponse response =
gamesApiClient
        .recall()
        .gamesPlayerTokens(recallSessionId)
        .setApplicationIds(applicationIds)
        .execute();

for (GamePlayerToken gamePlayerToken : response.getGamePlayerTokens()) {
    // The ID of the application that the token is associated with.
    String applicationId  = gamePlayerToken.getApplicationId();


    // Same string as was written in LinkPersona call.
    RecallToken recallToken = gamePlayerToken.getRecallToken();
    
    // Decrypt and recover in-game account.
}

Recall टोकन मिटाएं

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

import com.google.api.services.games.Games;
import com.google.api.services.games.model.UnlinkPersonaRequest;
import com.google.api.services.games.model.UnlinkPersonaResponse;

// ...

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

boolean unlinked = unlinkPersonaResponse.isUnlinked();

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

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

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

अन्य शर्तें

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