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

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

Yeni SDK, oturum açma başarısını artırmak için dört ana değişiklik içerir. şunları göz önünde bulundurmalısınız:

  1. Oyununuz kullanıma sunulduğunda oturum açma otomatik olarak tetiklenir. Şunun yerine: oturum açma işlemi için GoogleSignIn SDK'sının GoogleSignInClient özelliğini kullanarak otomatik sorgunun sonucunu almak için GamesSignInClient.isAuthenticated() oturum açma girişiminde bulunabilirsiniz.
  2. Client Factory sınıflarının artık GoogleSignInAccount nesnesine ihtiyacı olmayacak başarılı oldu. Ek OAuth kapsamları istenemez (GAMES_LITE otomatik olarak istenir).
  3. Kimlik doğrulama jetonları artık Play Oyun Hizmetleri'nde GamesSignInClient.requestServerSideAccess() SDK'dır.
  4. Oturumu kapatma yöntemi kaldırıldığından artık oyun içi öğe istemeyeceğiz düğmesini tıklayın.

Ayrıca, oyununuza otomatik olarak eklenen hesaplar nedeniyle kullanıcı oturum açmalarını sağlayabilir. Bu nedenle, kota yönetimi ile optimize edebilirsiniz. kotası da dahildir.

Yeni SDK Maven deposunu hedefleme

Gradle derleme sistemini kullanıyorsanız bunu, com.google.android.gms:play-services-games-v2:+ yapısına bağımlılığı modülünüzün build.gradle dosyasına ekleyin. Örnek:

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

SDK'yı başlatma

onCreate(..) Application sınıf. Örnek:

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

...

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

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

Ekstra kapsam belirtmezseniz kullanım alanınızı taşıma basittir.

  1. GoogleSignIn API'yi kullanarak oturum açma çağrılarını kaldırın. Oturum açıldığında her zaman oyun lansmanında yapılmalıdır. Bunun yerine, projenizin GamesSignInClient.isAuthenticated() ile otomatik oturum açma denemesi.

    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 etkin olduğundan, oturumu kapatmak için tüm aramaları kaldırın Google Play Games.

  3. Oyuncu başarıyla oturum açtıysa Play Games oturum açma düğmesini kaldırın tespit edebilirsiniz. Kullanıcı oyun başlatıldığında oturum açmamayı seçerse isteğe bağlı olarak Play Games simgesini içeren bir düğmeyi göstermeye devam edebilir ve GamesSignInClient.signIn() ile giriş işlemini tetikleyin.

  4. Kullanıcının oturum açtığını doğruladıktan sonra, kullanıcıyı tanımlamak için oynatıcı kimliğini 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.

Müşteri sınıf adlarını güncelle

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

Sunucu tarafı erişim iste

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

Ek kapsamları kaldır

Play Games Hizmetleri v2 ile ek kapsam talebinde bulunamazsınız. Şu durumda: hâlâ ek kapsam istemeniz gerekiyorsa Google ile Oturum Açma SDK'sı ve Play Games Hizmetleri'nin yanı sıra.

GoogleApiClient'tan taşıma

Oyununuz, mevcut entegrasyonlar için Play Games Hizmetleri SDK'sının GoogleApiClient API varyasyonu. Bu 2017'nin sonlarında kullanımdan kaldırıldı ve "bağlantısız" ile değiştirildi kullanabilirsiniz. Taşıma işlemi için "Bağlantısız" eşdeğerine sahip GoogleApiClient sınıf. Bu durumda ayrıca, oyununuzu v1'den v2'ye taşımak için bu sayfadaki yönergeleri uygulamanız gerekir. Yaygın sınıfların bir 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