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

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

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

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

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

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

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

מוסיפים את התלות של ה-SDK של Play Games לקובץ build.gradle של האפליקציה ברמה הבסיסית. אם אתם משתמשים ב-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/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()
  }
);