इस गाइड में, अपने क्लाइंट कोड को Play Games Services के v1 से v2 पर माइग्रेट करने का तरीका बताया गया है.
नए SDK टूल में, साइन इन की सफलता बढ़ाने के लिए चार बड़े बदलाव किए गए हैं. इनके बारे में आपको पता होना चाहिए:
- गेम लॉन्च होने पर, साइन इन अपने-आप ट्रिगर हो जाता है. साइन इन करने के लिए,
GoogleSignIn
SDK केGoogleSignInClient
का इस्तेमाल करने के बजाय, अपने-आप साइन इन होने की कोशिश का नतीजा पाने के लिएGamesSignInClient.isAuthenticated()
का इस्तेमाल किया जा सकता है. - क्लाइंट फ़ैक्ट्री क्लास को अब
GoogleSignInAccount
ऑब्जेक्ट को पास करने की ज़रूरत नहीं होगी. OAuth के अन्य स्कोप के लिए अनुरोध नहीं किया जा सकता.GAMES_LITE
के लिए, अनुरोध अपने-आप किया जाएगा. - पुष्टि करने वाले टोकन अब Play Games Services SDK में
GamesSignInClient.requestServerSideAccess()
का इस्तेमाल करके दिए जाते हैं. - साइन आउट करने का तरीका हटा दिया गया है. साथ ही, अब हमें Play Games Services में साइन इन या साइन आउट करने के लिए, गेम में मौजूद बटन की ज़रूरत नहीं होगी.
इसके अलावा, गेम लॉन्च होने पर अपने-आप साइन इन होने की सुविधा की वजह से, आपके गेम में अतिरिक्त लॉगिन होंगे. इसलिए, आपको अपने कोटा मैनेजमेंट की समीक्षा करनी चाहिए, ताकि यह पक्का किया जा सके कि आपका गेम, लॉगिन अनुरोध के कोटे को पार न करे.
SDK टूल की नई मेवन रिपॉज़िटरी को टारगेट करना
अगर Gradle बिल्ड सिस्टम का इस्तेमाल किया जा रहा है, तो अपने मॉड्यूल की build.gradle
फ़ाइल में, अपनी डिपेंडेंसी को com.google.android.gms:play-services-games-v2:+
आर्टफ़ैक्ट में बदलकर ऐसा किया जा सकता है. उदाहरण के लिए:
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
SDK टूल को शुरू करना
अपनी Application
क्लास के onCreate(..)
कॉलबैक में, Play Games SDK टूल को शुरू करें. उदाहरण के लिए:
import com.google.android.gms.games.PlayGamesSdk;
...
@Override
public void onCreate(){
super.onCreate();
PlayGamesSdk.initialize(this);
}
साइन इन और साइन आउट करने के लिए किए गए कॉल हटाना
अगर आपने कोई अतिरिक्त स्कोप नहीं बताया है, तो इस्तेमाल के उदाहरण को माइग्रेट करना आसान होगा.
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(). } });
साइन आउट करने के लिए, सभी कॉल हटाएं. अब खाता मैनेज करने की सुविधा, ओएस और Play Games ऐप्लिकेशन की सेटिंग में मौजूद है.
अगर खिलाड़ी ने साइन इन कर लिया है, तो अपने गेम से Play Games के 'साइन इन करें' बटन को हटा दें. अगर गेम लॉन्च होने पर उपयोगकर्ता साइन इन नहीं करता है, तो आपके पास Play Games आइकॉन वाला बटन दिखाना जारी रखने का विकल्प होता है. साथ ही,
GamesSignInClient.signIn()
की मदद से लॉगिन की प्रोसेस को ट्रिगर किया जा सकता है.उपयोगकर्ता के साइन इन होने की पुष्टि करने के बाद, उपयोगकर्ता की पहचान करने के लिए Player ID हासिल किया जा सकता है.
PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> { // Get PlayerID with mTask.getResult().getPlayerId() } );
अगर
GoogleSignIn
एपीआई का इस्तेमाल नहीं किया जा रहा है, तो उस पर अपनी डिपेंडेंसी हटाएं.
क्लाइंट क्लास के नाम अपडेट करना
क्लाइंट (जैसे, 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 Games Services v2 के साथ, किसी और स्कोप का अनुरोध नहीं किया जा सकता. अगर आपको अब भी ज़्यादा स्कोप के लिए अनुरोध करना है, तो हमारा सुझाव है कि आप Play Games Services के साथ-साथ Google Sign In SDK टूल का इस्तेमाल करें.
GoogleApiClient से माइग्रेट करना
पुराने मौजूदा इंटिग्रेशन के लिए, हो सकता है कि आपका गेम, Play Games Services 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