Play Games Hizmetleri oturum açma v2'ye taşıyın

Bu kılavuzda, istemci kodunuzu Play Games Services v1'den v2'ye nasıl taşıyacağınız açıklanmaktadır.

Yeni SDK, oturum açma başarısını artırmak için dikkat etmeniz gereken dört önemli değişiklik içerir:

  1. Oturum açma işlemi, oyununuz başlatıldığında otomatik olarak tetiklenir. Oturum açmak için GoogleSignIn SDK'sının GoogleSignInClient işlevini kullanmak yerine, otomatik oturum açma denemesinin sonucunu almak için GamesSignInClient.isAuthenticated() işlevini kullanabilirsiniz.
  2. İstemci Fabrikası sınıfları artık aktarılan bir GoogleSignInAccount nesnesine ihtiyaç duymayacak. Ek OAuth kapsamları istenemez (GAMES_LITE otomatik olarak istenir).
  3. Kimlik doğrulama jetonları artık Play Oyun Hizmetleri SDK'sında GamesSignInClient.requestServerSideAccess() kullanılarak sağlanmaktadır.
  4. Çıkış yöntemi kaldırıldı. Artık Play Games Hizmetleri'nde oturum açmak veya oturumu kapatmak için oyun içi bir düğmeye ihtiyacınız olmayacak.

Ayrıca, oyununuz başlatılırken otomatik oturum açma özelliği nedeniyle ek girişler gerçekleşir. Bu nedenle, oyununuzun giriş isteği kotasını aşmadığından emin olmak için kota yönetiminizi incelemeniz gerekir.

Yeni SDK Maven deposunu hedefleme

Gradle derleme sistemini kullanıyorsanız bu işlem, modülünüzün build.gradle dosyasında com.google.android.gms:play-services-games-v2:+ yapısını bağımlılığınız olarak değiştirerek yapılabilir. Örnek:

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

SDK'yı başlatma

Play Games SDK'sını, Application sınıfınızın onCreate(..) geri çağırma işlevinde başlatın. Örnek:

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

...

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

Oturum açma ve oturumu kapatma çağrılarını kaldırma

Ek kapsam belirtmezseniz kullanım alanınızı taşımak kolaydır.

  1. GoogleSignIn API'yi kullanarak oturum açma çağrılarını kaldırın. Oturum açma işlemi her zaman oyunun başlatılması sırasında gerçekleştirilir. Bunun yerine, GamesSignInClient.isAuthenticated() kullanarak otomatik oturum açma denemesinin sonucunu dinleyin.

    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().
      }
    });
    
  2. Hesap yönetimi artık işletim sistemi ve Play Games uygulaması ayarlarında bulunduğundan, oturumu kapatma isteklerini kaldırın.

  3. Oyuncu başarıyla oturum açtıysa Play Games oturum açma düğmesini oyununuzdan kaldırın. Kullanıcı oyun başlatıldığında oturum açmayı tercih etmezse isteğe bağlı olarak Play Games simgesini içeren bir düğme göstermeye devam edebilir ve GamesSignInClient.signIn() ile giriş işlemini tetikleyebilirsiniz.

  4. Kullanıcının oturum açtığını doğruladıktan sonra kullanıcıyı tanımlamak için Oyuncu Kimliği'ni alabilirsiniz.

    PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
        // Get PlayerID with mTask.getResult().getPlayerId()
      }
    );
    
  5. Artık kullanılmıyorsa GoogleSignIn API'ye olan bağımlılığınızı kaldırın.

İstemci sınıfı adlarını güncelleme

İstemciler oluştururken (ör. LeaderboardsClient veya AchievementsClient) Games.getFooClient() yerine PlayGames.getFooClient() kullanın.

Sunucu tarafı erişim isteğinde bulunma

Sunucu tarafı erişim isteğinde bulunurken GoogleSignInAccount.getServerAuthCode() yerine GamesSignInClient.requestServerSideAccess() kullanın.

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.
    }
});

Fazla kapsamları kaldırma

Play Games Hizmetleri v2 ile ek kapsam isteğinde bulunamazsınız. Yine de ek kapsamlar istemeniz gerekiyorsa Play Games Hizmetleri ile birlikte Google ile oturum açma SDK'sını kullanmanızı öneririz.

GoogleApiClient'ten taşıma

Mevcut eski entegrasyonlarda oyununuz Play Games Hizmetleri SDK'sının GoogleApiClient API varyantını kullanıyor olabilir. Bu özellik 2017'nin sonlarında desteği sonlandırıldı ve "bağlantısız" istemcilerle değiştirildi. Taşıma işlemi için GoogleApiClient sınıfını "bağlantısız" eşdeğeriyle değiştirebilirsiniz. Ardından, oyununuzu 1. sürümden 2. sürüme taşımak için bu sayfada yer alan talimatları da uygulamanız gerekir. Yaygın sınıfların eşlemesi aşağıda verilmiştir:

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