במדריך הזה מוסבר איך להעביר את קוד הלקוח מ-Play Games Services v1 ל-v2.
ערכת ה-SDK החדשה כוללת ארבעה שינויים עיקריים שיעזרו לכם לשפר את תהליך הכניסה, שחשוב להיות מודעים להם:
- הכניסה לחשבון מופעלת באופן אוטומטי כשמפעילים את המשחק. במקום להשתמש ב-
GoogleSignIn
SDKGoogleSignInClient
ב-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 אי אפשר לבקש היקפי הרשאה נוספים. אם אתם עדיין צריכים לבקש היקפים נוספים, מומלץ להשתמש ב-SDK לכניסה באמצעות Google לצד Play Games Services.
מעבר מ-GoogleApiClient
בשילובים ישנים יותר של המשחק, יכול להיות שהמשחק תלוי בגרסת ה-API של GoogleApiClient של Play Games Services SDK. האפשרות הזו הווצאה משימוש בסוף שנת 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