Friends API'lerini entegre edin (Java)

Java oyun kodunuzda Friends API'sini uygulamak için bu kılavuzdaki adımları kullanın.

Arkadaşları yükle

Arkadaş olan oyuncuların listesini alabilir ve görüntüleyebilirsiniz (oyunda) geçerli kullanıcıyla aynı. Kullanıcı olarak, oyun seçiciler arasında arkadaş listesine erişme. Arkadaş listesini aldığınızda, durumlarda işe yarıyor. Bunların tümü, aşağıdakileri yapmak için API'ye dahil edilir: erişim isteğinde bulunmayı ve ardından arkadaş listesini kullanmayı özellikle kolaylaştıran görevi görebilir. Arkadaş listesini yüklemek için şu adımları uygula:

  1. Şunu çağırın: PlayersClient.loadFriends() yöntemidir. Bu yöntem, bir Task nesne olarak tanımlar.
  2. Arama başarılı olursa (kullanıcı, arkadaşlarına zaten erişim izni verdiyse) listesi olduğunda), Google Play Games hizmetleri PlayerBuffer temsil eder.
  3. Oyuncunun arkadaş listesine erişim izni vermesi gerekiyorsa çağrı CANNOT TRANSLATE FriendsResolutionRequiredException. Henüz iletişim kutusu gösterilmiyor.

    1. Bu istisna, şu soruyu soran bir iletişim kutusunu tetikleyen Intent içeriyor: oynatıcısını kontrol edin. Şurayı açmak için bu Intent hemen başlatabilirsiniz: iletişim kutusunu açın. Bu Intent öğesini yalnızca bir kez kullanabilirsiniz.
    2. Intent etkinliğinin sonucu Activity.RESULT_OK ise izni verildi. Arkadaşları geri vermek için loadFriends() adlı kişiyi tekrar arayın liste'ye dokunun. Sonuç Activity.RESULT_CANCELLED ise kullanıcı şunu yapmıştır: izin vermeyecek ve loadFriends() adlı kullanıcı şunu geri vermeye devam edecek: FriendsResolutionRequiredException.

Aşağıdaki kod, arkadaş listesi yükleme işleminin nasıl uygulanacağını gösterir:

// Attempt loading friends.
// Register a success listener to handle the successfully loaded friends list.
// Register a failure listener to handle asking for permission to access the list.
PlayGames.getPlayersClient(this)
    .loadFriends(PAGE_SIZE, /* forceReload= */ false)
    .addOnSuccessListener(
        new OnSuccessListener<AnnotatedData<PlayerBuffer>>() {
            @Override
            public void onSuccess(AnnotatedData<PlayerBuffer>  data) {
          PlayerBuffer playerBuffer = data.get();
          // ...
        })

    .addOnFailureListener(
        exception -> {
      if (exception instanceof FriendsResolutionRequiredException) {
        PendingIntent pendingIntent =
            ((FriendsResolutionRequiredException) task.getException())
            .getResolution();
        parentActivity.startIntentSenderForResult(
            pendingIntent.getIntentSender(),
            /* requestCode */ SHOW_SHARING_FRIENDS_CONSENT,
            /* fillInIntent */ null,
            /* flagsMask */ 0,
            /* flagsValues */ 0,
            /* extraFlags */ 0,
            /* options */ null);
     }
   });
 return;
}

Aşağıdaki kodda, izin isteği sonucunun nasıl ele alınacağı gösterilmektedir:

/** Handle the activity result from the request for consent. */
@Override
public void onActivityResult(int requestCode, int result, Intent data) {
  if (requestCode == SHOW_SHARING_FRIENDS_CONSENT) {
    if (result == Activity.RESULT_OK) {
      // We got consent from the user to access their friends. Retry loading the friends
      callLoadFriends();
    } else {
      // User did not grant consent.
    }
  }
}

Başka bir oyuncunun profilini görüntüleme

Şu konumdan başka bir oyuncunun Play Games profilinin görünümünü görüntüleyebilirsiniz: bir çözüm bulmanız gerekir. Bu görünüm, oyuncuların arkadaş davetleri göndermelerine ve kabul etmelerine olanak tanır gösterilen oynatıcıyı oluşturur. Bu görünüm arkadaşlara erişim gerektirmez liste'ye dokunun. Ayrıca, oyununuzda ayrı bir oyuncu adı kavramı varsa kullanıyorsanız, bunları profil görünümüne iletebilirsiniz. Böylece arkadaş davetlerine ek bağlam bilgisi sağlayabilirsiniz.

Başka bir oyuncunun profilini göstermek için şu adımları izleyin:

  1. Şunu çağırın: PlayersClient.getCompareProfileIntent() yöntemidir. Bu yöntem, bir Task nesne olarak tanımlar.
  2. Arama başarılı olursa Google Play Games hizmetleri şu Intent'i döndürür: Kullanıcının kendisini başka bir reklamla karşılaştırabileceği bir ekran görüntüler e-posta adresini kullanabilirsiniz.
  3. Bir etkinlik başlatmak için önceki adımda sağlanan Intent öğesini kullanın.
// Retrieve and launch an Intent to show a player profile within the game.
PlayGames.getPlayersClient(this)
    .getCompareProfileIntent(otherPlayerId)
    .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent  intent) {
          startActivityForResult(intent, RC_SHOW_PROFILE);
          // ...
        }});

Oyunun oyuncular için kendi adı varsa bunlar API çağrısına eklenebilir. Bu şekilde Play Games, arkadaşınıza gönderen oyuncuların takma adını belirleyebilir "<game-specific-name> oyununa özel davetler DÜŞEYARA'yı <oyununuzun-adı>" (Play Games otomatik olarak " &lt;your-game-name&gt;&quot;):

// Show a player profile within the game, with additional hints containing the
// game-specific names for both players.
// - otherPlayerId is the Play Games playerId of the player to view.
// - otherPlayerInGameName is the game-specific name of the player being viewed.
// - currentPlayerInGameName is the game-specific name of the player who is signed
//   in. Hence if the player sends an invitation to the profile they are viewing,
//   their game-specific name can be included.
PlayGames.PlayersClient(this)
    .getCompareProfileIntentWithAlternativeNameHints(otherPlayerId, otherPlayerInGameName, currentPlayerInGameName)
    .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent  intent) {
          startActivityForResult(intent, RC_SHOW_PROFILE);
          // ...
        }});