כניסה לחשבון במשחקי Android

כדי לקבל גישה לפונקציונליות של Google Play Games Services, המשחק שלך צריך לספק את של השחקן שמחובר לחשבון. במסמכי התיעוד האלה מוסבר איך להטמיע חוויית כניסה חלקה במשחק.

ב-Play Games Services v2 SDK יש כמה שיפורים שמשפרים את מספר המשתמשים שנכנסו למשחק, כדי להקל על הפיתוח:

  • שיפורים למשתמשים:
    • אחרי שבוחרים חשבון ברירת מחדל, המשתמשים מחוברים בלי שהם צריכים לקיים אינטראקציה עם הנחיה.
    • המשתמשים כבר לא צריכים להוריד את אפליקציית Play Games כדי להיכנס באמצעות אפשר להשתמש ב-Play Games Services או ליצור חשבון חדש.
    • עכשיו משתמשים יכולים לנהל את החשבונות שלהם ב-Play Games Services בשביל מספר משחקים מדף אחד.
  • שיפורים למפתחים:
    • קוד הלקוח כבר לא צריך לטפל בתהליך הכניסה או היציאה, בתור התחברות מופעלת באופן אוטומטי כשהמשחק מתחיל, וניהול החשבון בהגדרות מערכת ההפעלה.

שילוב לקוח חדש

בקטע הזה מוסבר איך לבצע שילוב לקוח חדש עם Play Games Services כניסה לגרסה 2.

הוספת התלות

הוספת התלות של ה-SDK של Play Games Services לרמת השורש של האפליקציה קובץ build.gradle. אם משתמשים ב-Gradle, אפשר להוסיף או לעדכן של יחסי התלות באופן הזה:

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

הגדרת מזהה הפרויקט

כדי להוסיף לאפליקציה את מזהה הפרויקט של Play Games Services SDK, צריך להשלים את את השלבים הבאים:

  1. לקובץ AndroidManifest.xml של האפליקציה, צריך להוסיף את ה<meta-data> הבא לרכיב <application>:

    <manifest>
      <application>
        <meta-data android:name="com.google.android.gms.games.APP_ID"
                   android:value="@string/game_services_project_id"/>
      </application>
    </manifest>
    

    הגדרת ההפניה למשאב String @string/game_services_project_id באמצעות מזהה הפרויקט בשירותי המשחקים של המשחקים שלכם. שירותי המשחקים שלך מזהה הפרויקט מופיע מתחת לשם המשחק בדף הגדרות אישיות ב-Google Play Console.

  2. בקובץ res/values/strings.xml צריך להוסיף הפניה למשאב של מחרוזת ומגדירים את מזהה הפרויקט כערך. ב-Google Play Console אפשר למצוא מזהה הפרויקט מתחת לשם המשחק בדף Configuration. לדוגמה:

    <!-- res/values/strings.xml -->
    <resources>
      <!-- Replace 0000000000 with your game’s project id. Example value shown above.  -->
      <string translatable="false"  name="game_services_project_id"> 0000000000 </string>
    </resources>
    

הפעלת ה-SDK

יש להפעיל את Play Games SDK בקריאה החוזרת (callback) של onCreate(..) של Application בכיתה.

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

...

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

קבלת תוצאת הכניסה

כשהמשחק יופעל, המערכת תמיד תנסה להיכנס לחשבון המשתמש. שפת תרגום לאמת את המשתמש, עליך לוודא שהמשתמש נכנס בהצלחה, ואז לקבל את מזהה הנגן.

כדי לאמת את ניסיון הכניסה, צריך להתקשר למספר GamesSignInClient.isAuthenticated() ול אפשר להשתמש בפונקציה addOnCompleteListener כדי לאחזר את התוצאות. לדוגמה:

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, ומנסים להיכנס שוב למשתמש באמצעות קריאה ל-GamesSignInClient.signIn() אם לוחץ על הלחצן.

אחרי שמוודאים שהמשתמש מחובר, אפשר לאחזר את מזהה הנגן כדי לזהות את המשתמש. לדוגמה:

PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
    // Get PlayerID with mTask.getResult().getPlayerId()
  }
);