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

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

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

  • שיפורים למשתמשים:
    • אחרי שבוחרים חשבון ברירת מחדל, המשתמשים מחוברים לחשבון בלי צורך לבצע פעולה כלשהי.
    • משתמשים כבר לא צריכים להוריד את אפליקציית 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/game_services_project_id באמצעות מזהה הפרויקט של שירותי המשחקים של המשחקים שלכם בתור הערך. מזהה הפרויקט של Games Services מופיע מתחת לשם המשחק בדף Configuration ב-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(..) ב-class‏ 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()
  }
);