Google Play Games Hizmetleri işlevine erişmek için oyununuzun, kimliği doğrulanmış oyuncunun hesabını sağlaması gerekir. Bu dokümanda, oyununuzda sorunsuz bir kimlik doğrulama deneyiminin nasıl uygulanacağı açıklanmaktadır.
Play Oyun Hizmetleri v2 SDK'sı, oyununuzda kimliği doğrulanan kullanıcı sayısını artıran ve geliştirme sürecini kolaylaştıran bir dizi iyileştirme sunar:
- Kullanıcılar için iyileştirmeler:
- Varsayılan bir hesap seçtikten sonra kullanıcılar, istemle etkileşime girmelerine gerek kalmadan kimliklerini doğrulayabilir.
- Kullanıcıların, Play Oyun Hizmetleri'nde kimlik doğrulaması yapmak veya yeni bir hesap oluşturmak için Play Oyunlar uygulamasını indirmesi gerekmez.
- Kullanıcılar artık tek bir sayfadan birden fazla oyun için Play Oyun Hizmetleri hesaplarını yönetebilir.
- Geliştiriciler için iyileştirmeler:
- Oturum açma işlemi oyun başladığında otomatik olarak tetiklendiğinden ve hesap yönetimi işletim sistemi ayarlarında yapıldığından istemci kodunun artık kimlik doğrulama veya oturumu kapatma akışını işlemesi gerekmez.
Yeni istemci entegrasyonu
Bu bölümde, Play Games Hizmetleri ile yeni bir istemci entegrasyonunun nasıl yapılacağı gösterilmektedir.
Bağımlılığı ekleme
Play Oyun Hizmetleri SDK'sı bağımlılığını uygulamanızın kök düzeyindeki
build.gradle dosyasına ekleyin. Gradle kullanıyorsanız bağımlılığı aşağıdaki gibi ekleyebilir veya güncelleyebilirsiniz:
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
Proje kimliğini tanımlayın
Play Oyun Hizmetleri SDK'sı proje kimliğini uygulamanıza eklemek için aşağıdaki adımları tamamlayın:
Uygulamanızın
AndroidManifest.xmldosyasında,<application>öğesine aşağıdaki<meta-data>öğesini ve özellikleri ekleyin:<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>Oyunlarınızın Oyun hizmetleri proje kimliğini değer olarak kullanarak dize kaynağı referansını
@string/game_services_project_idtanımlayın. Games Hizmetleri proje kimliğinizi, Google Play Console'daki Yapılandırma sayfasında oyun adınızın altında bulabilirsiniz.res/values/strings.xmldosyanıza bir dize kaynağı referansı ekleyin ve proje kimliğinizi değer olarak ayarlayın. Google Play Console'da proje kimliğinizi Yapılandırma sayfasındaki oyun adınızın altında bulabilirsiniz. Örneğin:<!-- 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'yı başlatma
onCreate(..) sınıfınızın Application geri çağırma işlevinde Play Games SDK'sını başlatın.
import com.google.android.gms.games.PlayGamesSdk;
...
@Override
public void onCreate(){
super.onCreate();
PlayGamesSdk.initialize(this);
}
Kimlik doğrulama sonucunu alma
Oyununuz başlatıldığında her zaman kullanıcının kimliğini doğrulamaya çalışır. Kullanıcının kimliğini doğrulamak için kullanıcının kimliğinin başarıyla doğrulandığını doğrulamanız ve ardından oyuncu kimliğini almanız gerekir.
Kimlik doğrulama girişimini doğrulamak için GamesSignInClient.isAuthenticated() numaralı telefonu arayın ve sonuçları almak için addOnCompleteListener kodunu kullanın. Örneğin:
GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());
gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
boolean isAuthenticated =
(isAuthenticatedTask.isSuccessful() &&
isAuthenticatedTask.getResult().isAuthenticated());
if (isAuthenticated) {
// Continue with Play Games Services
} else {
// Show a sign-in button to ask players to authenticate. Clicking it should
// call GamesSignInClient.signIn().
}
});
Otomatik olarak tetiklenen profil oluşturmayı engelleme
Manifesto dosyası aracılığıyla otomatik olarak tetiklenen profil oluşturma istemlerini devre dışı bırakabilirsiniz. Bu sayede Play Games Hizmetleri profili olmayan kullanıcılar, Play Games Hizmetleri profili oluşturmaları istenmeden oyunu yüklemeye devam edebilir. Daha fazla bilgi için Profil oluşturma seçenekleri başlıklı makaleyi inceleyin.
Bu özelliği kullanmak için aşağıdaki koşulların karşılandığından emin olun:
- Cihazda oturum açılmış Google Hesaplarının hiçbirinde Play Games Hizmetleri profili yok.
- Oyununuz, Play Games Hizmetleri SDK'sının
com.google.android.gms:play-services-games-v2:21.0.0veya daha yeni bir sürümüyle entegre edilmiş olmalıdır.
Otomatik olarak tetiklenen profil oluşturma istemlerini önlemek için aşağıdaki adımları uygulayın:
AndroidManifest.xmldosyasında,<meta-data>öğesinecom.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATIONetiketini,<application>öğesine ise özellikleri ekleyin:<application> ... <meta-data android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION" android:value="true" /> ... </application>Bu işareti doğru olarak ayarlamak, Play Games Hizmetleri'ne oyununuzun profil oluşturma sürecini yöneteceğini bildirir. Bu nedenle, Play Games Hizmetleri, cihazda mevcut bir Play Games Hizmetleri profili olmayan kullanıcılar için profil oluşturma kullanıcı arayüzünü otomatik olarak göstermez.
Herhangi bir Play Games Hizmetleri API'sini çağırdığınızda
GamesClientStatusCodes.SIGN_IN_REQUIREDdurum kodu, Play Games Hizmetleri profili olmadığı için kullanıcının otomatik olarak kimliği doğrulanamadığından çağrının başarısız olduğunu gösterir.Bu sayede, Play Games Hizmetleri profili olmayan kullanıcılar, Play Games Hizmetleri profili oluşturmaları için hemen istem almadan uyguladığınız kimlik doğrulama yöntemleriyle devam edebilir. Profil oluşturma işlemi
GamesSignInService.signin()numarası aranarak başlatılabilir.import com.google.android.gms.games.PlayGames; ... // Get the achievements client using Play Games services. AchievementsClient achievementsClient = PlayGames.getAchievementsClient(getActivity()); achievementsClient.getAchievementsIntent() .addOnFailureListener( new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { int statusCode = ((ApiException) exception).getStatusCode(); if (statusCode == GamesClientStatusCodes.SIGN_IN_REQUIRED) { // SIGN_IN_REQUIRED: The user needs to sign in with Play Games Services. // Call GamesSignInService.signin() to prompt for // authentication at a suitable time which will trigger the // profile creation UI. // (e.g., after a tutorial). Use GamesSignInService.isAuthenticated() to check auth status. } } });
Kapsam dışında bırakma etiketini ekledikten sonra, ekleme işlemini doğrulamak için
logcatpenceresini kullanın.logcatçıkışında aşağıdakine benzer bir mesaj yer alıyor: "Oyun, otomatik profil oluşturma istemini devre dışı bıraktı (manifest kullanılarak)".