כניסה למשחקים ל-Android

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

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

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

שילוב לקוח חדש עם גרסה 2 של כניסה ל-Play Games Services

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

הוספת תלות ב-Play Games Services SDK

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

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

הגדרת מזהה הפרויקט ב-Play Games Services

כדי להוסיף לאפליקציה את מזהה הפרויקט של 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()
  }
);