Android oyunları için platform kimlik doğrulaması

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:

  1. Uygulamanızın AndroidManifest.xml dosyası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_id tanımlayın. Games Hizmetleri proje kimliğinizi, Google Play Console'daki Yapılandırma sayfasında oyun adınızın altında bulabilirsiniz.

  2. res/values/strings.xml dosyanı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.0 veya 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:

  1. AndroidManifest.xml dosyasında, <meta-data> öğesine com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION etiketini, <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.

  2. Herhangi bir Play Games Hizmetleri API'sini çağırdığınızda GamesClientStatusCodes.SIGN_IN_REQUIRED durum 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.
                }
              }
            });
  3. Kapsam dışında bırakma etiketini ekledikten sonra, ekleme işlemini doğrulamak için logcat penceresini 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)".