במדריך הזה מוסבר איך להעביר את קוד הלקוח מ-Play Games Services v1 ל-v2.
ה-SDK החדש מכיל ארבעה שינויים משמעותיים שיעזרו לכם לשפר את ההצלחה של הכניסה לחשבון. חשוב לדעת:
- הכניסה לחשבון מופעלת באופן אוטומטי כשמפעילים את המשחק. במקום להשתמש ב-
GoogleSignInClient
שלGoogleSignIn
SDK כדי לבצע כניסה, אפשר להשתמש ב-GamesSignInClient.isAuthenticated()
כדי לאחזר את התוצאה של ניסיון הכניסה האוטומטי. - לא תצטרכו להעביר אובייקט
GoogleSignInAccount
לכיתות של Client Factory. לא ניתן לבקש היקפי הרשאות נוספים של OAuth (הבקשה ל-GAMES_LITE
תתבצע באופן אוטומטי). - אסימוני אימות ניתנים עכשיו באמצעות
GamesSignInClient.requestServerSideAccess()
ב-SDK של Play Games Services. - שיטת היציאה מהחשבון תבוטל, ולא נצטרך יותר לחצן במשחק כדי להיכנס או לצאת מ-Play Games Services.
בנוסף, יהיו במשחק כניסות נוספות בגלל הכניסה האוטומטית כשהמשחק יושק. לכן, כדאי לבדוק את ניהול המכסות כדי לוודא שהמשחק לא חורג מהמכסה של בקשות ההתחברות.
טירגוט למאגר Maven החדש של ה-SDK
אם אתם משתמשים במערכת ה-build של Gradle, תוכלו לעשות זאת על ידי שינוי התלות ב-artifact com.google.android.gms:play-services-games-v2:+
בקובץ build.gradle
של המודול. לדוגמה:
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
אתחול ה-SDK
אתחול ה-SDK של Play Games ב-callback של onCreate(..)
בכיתה Application
. לדוגמה:
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()
.אחרי שתבדקו שהמשתמש נכנס לחשבון, תוכלו לאחזר את מזהה המשתמש כדי לזהות אותו.
PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> { // Get PlayerID with mTask.getResult().getPlayerId() } );
אם אתם לא משתמשים יותר ב-API של
GoogleSignIn
, הסירו את התלות בו.
עדכון שמות של כיתות לקוח
כשיוצרים לקוחות (למשל LeaderboardsClient
או AchievementsClient
), משתמשים ב-PlayGames.getFooClient()
במקום ב-Games.getFooClient()
.
שליחת בקשה לגישה בצד השרת
כשמבקשים גישה בצד השרת, צריך להשתמש ב-GamesSignInClient.requestServerSideAccess()
במקום ב-GoogleSignInAccount.getServerAuthCode()
.
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.
}
});
הסרת היקפי גישה נוספים
בגרסה 2 של שירותי Play Games אי אפשר לבקש היקפי הרשאה נוספים. אם עדיין צריך לבקש היקפי גישה נוספים, מומלץ להשתמש ב-Google Sign In SDK לצד שירותי המשחקים של Play.
מעבר מ-GoogleApiClient
בשילובים קיימים ישנים יותר, יכול להיות שהמשחק שלכם תלוי בגרסה של GoogleApiClient API ב-SDK של Play Games Services. האפשרות הזו הווצאה משימוש בסוף שנת 2017 והוחלפה בלקוחות 'ללא חיבור'. כדי להעביר את הקוד, אפשר להחליף את הכיתה GoogleApiClient
בכיתה מקבילה ללא חיבור. לאחר מכן תצטרכו לפעול לפי ההוראות בדף הזה כדי להעביר את המשחק מגרסה 1 לגרסה 2.
לפניכם מיפוי של כיתות נפוצות:
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