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:
- Oturum açma işlemi, oyununuz başlatıldığında otomatik olarak tetiklenir. Oturum açmak için
GoogleSignIn
SDK'sınınGoogleSignInClient
işlevini kullanmak yerine, otomatik oturum açma denemesinin sonucunu almak içinGamesSignInClient.isAuthenticated()
işlevini kullanabilirsiniz. - İstemci Fabrikası sınıfları artık aktarılan bir
GoogleSignInAccount
nesnesine ihtiyaç duymayacak. Ek OAuth kapsamları istenemez (GAMES_LITE
otomatik olarak istenir). - Kimlik doğrulama jetonları artık Play Oyun Hizmetleri SDK'sında
GamesSignInClient.requestServerSideAccess()
kullanılarak sağlanmaktadır. - Çı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.
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(). } });
Hesap yönetimi artık işletim sistemi ve Play Games uygulaması ayarlarında bulunduğundan, oturumu kapatma isteklerini kaldırın.
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.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() } );
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