Play की गेम सेवाओं के साइन-इन v2 पर माइग्रेट करें

इस गाइड में, Play की गेम सेवाओं से क्लाइंट कोड को माइग्रेट करने का तरीका बताया गया है v1 से v2.

साइन-इन करने की प्रोसेस को बेहतर बनाने के लिए, SDK टूल के नए वर्शन में चार बड़े बदलाव किए गए हैं. इसके बारे में पता होना चाहिए:

  1. गेम लॉन्च होने पर, साइन इन करने की सुविधा अपने-आप ट्रिगर हो जाती है. इसके बजाय साइन-इन करने के लिए, GoogleSignIn SDK टूल के GoogleSignInClient का इस्तेमाल करके, अपने-आप जनरेट हुए मैसेज का नतीजा फ़ेच करने के लिए, GamesSignInClient.isAuthenticated() साइन-इन करने की कोशिश की गई.
  2. क्लाइंट फ़ैक्ट्री क्लास को अब GoogleSignInAccount ऑब्जेक्ट की ज़रूरत नहीं होगी पास हुआ. OAuth के और दायरों का अनुरोध नहीं किया जा सकता (GAMES_LITE अपने-आप अनुरोध किया गया).
  3. प्रमाणीकरण टोकन अब इसका इस्तेमाल करके दिए जाते हैं Play की गेम सेवाओं में मौजूद GamesSignInClient.requestServerSideAccess() SDK टूल.
  4. साइन आउट करने का तरीका हटा दिया गया है. अब हमें गेम में हिस्सा लेने की ज़रूरत नहीं पड़ेगी बटन पर क्लिक करें.

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

SDK टूल की नई Maven रिपॉज़िटरी को टारगेट करना

अगर Gradle बिल्ड सिस्टम का इस्तेमाल किया जा रहा है, तो com.google.android.gms:play-services-games-v2:+ आर्टफ़ैक्ट पर निर्भर है आपके मॉड्यूल की build.gradle फ़ाइल. उदाहरण के लिए:

dependencies {
 implementation "com.google.android.gms:play-services-games-v2:+"
}

SDK टूल शुरू करें

अपनेonCreate(..) Application क्लास. उदाहरण के लिए:

import com.google.android.gms.games.PlayGamesSdk;

...

@Override
public void onCreate(){
  super.onCreate();
  PlayGamesSdk.initialize(this);
}

साइन-इन और साइन-आउट कॉल हटाएं

अगर कोई अतिरिक्त स्कोप नहीं चुना जाता है, तो इस्तेमाल का उदाहरण माइग्रेट करने के लिए आसान.

  1. GoogleSignIn API का इस्तेमाल करके, साइन इन करने के लिए इस्तेमाल किए जाने वाले कॉल हटाएं. साइन इन करने पर यह होगा हमेशा गेम लॉन्च पर की जाती हैं. इसके बजाय, आज की तारीख में GamesSignInClient.isAuthenticated() का इस्तेमाल करके अपने-आप साइन-इन करने की कोशिश की गई.

    GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());
    
    gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
      boolean isAuthenticated =
        (isAuthenticatedTask.isSuccessful() &&
         isAuthenticatedTask.getResult().isAuthenticated());
    
      if (isAuthenticated) {
        // Continue with Play Games Services
      } else {
        // Disable your integration with Play Games Services or show a
        // login button to ask  players to sign-in. Clicking it should
        // call GamesSignInClient.signIn().
      }
    });
    
  2. खाते का मैनेजमेंट अब भी चालू है. इसलिए, साइन आउट करने के लिए सभी कॉल हटाएं जो ओएस और Play Games ऐप्लिकेशन की सेटिंग में शामिल हों.

  3. अगर खिलाड़ी ने साइन इन कर लिया है, तो Play Games में साइन इन करने का बटन हटाएं को ट्रैक कर सकते हैं. अगर गेम लॉन्च होने पर उपयोगकर्ता साइन इन नहीं करता है, तो आपको विकल्प के तौर पर, Play Games आइकॉन के साथ बटन को दिखाना जारी रखने का विकल्प चुना जा सकता है और GamesSignInClient.signIn() से लॉगिन प्रोसेस को ट्रिगर करेगा.

  4. उपयोगकर्ता ने साइन-इन कर लिया है, इसकी पुष्टि करने के बाद, उपयोगकर्ता की पहचान करने के लिए प्लेयर आईडी फिर से हासिल किया जा सकता है.

    PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
        // Get PlayerID with mTask.getResult().getPlayerId()
      }
    );
    
  5. अगर GoogleSignIn API का इस्तेमाल अब नहीं किया जा रहा है, तो इस पर अपनी डिपेंडेंसी हटाएं.

क्लाइंट क्लास के नाम अपडेट करें

क्लाइंट बनाते समय (जैसे LeaderboardsClient या AchievementsClient) Games.getFooClient() के बजाय PlayGames.getFooClient() का इस्तेमाल करें.

सर्वर साइड ऐक्सेस का अनुरोध करें

सर्वर साइड ऐक्सेस का अनुरोध करते समय, GoogleSignInAccount.getServerAuthCode() के बजाय GamesSignInClient.requestServerSideAccess() का इस्तेमाल करें.

GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(this);
gamesSignInClient
  .requestServerSideAccess(OAUTH_2_WEB_CLIENT_ID,
                           /*forceRefreshToken=*/ false)
  .addOnCompleteListener( task -> {
    if (task.isSuccessful()) {
      String serverAuthToken = task.getResult();
      // Send authentication code to the backend game server to be
      // exchanged for an access token and used to verify the
      // player with the Play Games Services REST APIs.
    } else {
      // Failed to retrieve authentication code.
    }
});

अतिरिक्त दायरे हटाएं

Play की गेम सेवाओं के वर्शन 2 से, किसी अतिरिक्त स्कोप का अनुरोध नहीं किया जा सकता. अगर आपको अब भी अतिरिक्त दायरों का अनुरोध करने की ज़रूरत है, तो हमारा सुझाव है कि आप 'Google साइन इन' SDK टूल साथ ही, Play की गेम सेवाओं के साथ-साथ.

GoogleApiClient से माइग्रेशन

पुराने मौजूदा इंटिग्रेशन के लिए, आपका गेम इन चीज़ों पर निर्भर कर सकता है: Play की गेम सेवाओं के SDK टूल का GoogleApiClient API का वर्शन. यह था 2017 के आखिर में बंद कर दिया गया और "कनेक्शन के बिना" से बदल दिया गया क्लाइंट. माइग्रेट करने के लिए आप बिना इंटरनेट कनेक्शन वाली GoogleApiClient क्लास. इसके बाद, आपको अपने गेम को v1 से v2 पर माइग्रेट करने के लिए, इस पेज पर दिए गए दिशा-निर्देशों का पालन करना ज़रूरी है. यहां सामान्य क्लास की मैपिंग की गई है:

com.google.android.gms.games.achievement.Achievements ->
    com.google.android.gms.games.AchievementsClient

com.google.android.gms.games.leaderboard.Leaderboard ->
    com.google.android.gms.games.LeaderboardsClient

com.google.android.gms.games.snapshot.Snapshots ->
    com.google.android.gms.games.SnapshotsClient

com.google.android.gms.games.stats.PlayerStats ->
    com.google.android.gms.games.PlayerStatsClient

com.google.android.gms.games.Players ->
    com.google.android.gms.games.PlayersClient

com.google.android.gms.games.GamesStatusCodes ->
    com.google.android.gms.games.GamesClientStatusCodes