Zintegruj interfejsy Friends API (Java)

Wykonaj czynności opisane w tym przewodniku, aby wdrożyć interfejsy Friends API w kodzie gry Java.

Wczytaj znajomych

Możesz pobrać i wyświetlić (w grze) listę znajomych graczy z bieżącym użytkownikiem. Jako użytkownik masz kontrolę nad tym, które gry mają dostęp do listy znajomych. Po pobraniu listy znajomych musisz obsłużyć w których przypadku potrzebne jest pozwolenie. To jest zawarte w interfejsie API, aby: ułatwienie wysyłania próśb o dostęp, a następnie korzystania z listy znajomych. zadanie. Aby wczytać listę znajomych, wykonaj następujące czynności:

  1. Wywołaj funkcję PlayersClient.loadFriends() która jest wywołaniem asynchronicznym zwracającym Task.
  2. Jeśli połączenie się powiedzie (użytkownik przyznał już dostęp do znajomych lista), Usługi gier Google Play zwracają adnotacje PlayerBuffer reprezentujących znajomych użytkownika.
  3. Jeśli gracz musi przyznać dostęp do listy znajomych, wywołanie zakończy się niepowodzeniem, w FriendsResolutionRequiredException Na razie nie ma żadnych okien dialogowych.

    1. Ten wyjątek zawiera element Intent, który powoduje wyświetlenie okna z pytaniem . Możesz natychmiast uruchomić to urządzenie Intent, aby otworzyć okna z prośbą o zgodę na przetwarzanie danych osobowych. Tego urządzenia Intent możesz użyć tylko raz.
    2. Jeśli wynikiem aktywności użytkownika Intent jest Activity.RESULT_OK, użytkownik wyraził zgodę. Zadzwoń ponownie do użytkownika loadFriends(), aby odesłać znajomych z listy. Jeśli wynik to Activity.RESULT_CANCELLED, użytkownik to zrobił nie wyrażą zgody, a loadFriends() będzie nadal wracał FriendsResolutionRequiredException

Poniższy kod pokazuje, jak wdrożyć wczytywanie listy znajomych:

// 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;
}

Ten kod pokazuje, jak obsługiwać wynik z prośby o zgodę na wykorzystanie danych:

/** 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.
    }
  }
}

Wyświetlanie profilu innego gracza

Możesz wyświetlić widok profilu innego gracza w Grach Play w w danej grze. Ten widok pozwala graczom wysyłać i przyjmować zaproszenia do znajomych według wyświetlanego odtwarzacza. Ten widok nie wymaga dostępu do znajomych z listy. Dodatkowo, jeśli w grze są osobne nazwy graczy z identyfikatorów gracza w Grach Play, możesz przekazać je do widoku profilu, dzięki czemu mogą być uwzględniani w każdym zaproszeniu do znajomych, co zapewnia dodatkowy kontekst.

Aby wyświetlić profil innego gracza:

  1. Wywołaj funkcję PlayersClient.getCompareProfileIntent() która jest wywołaniem asynchronicznym zwracającym Task.
  2. Jeśli wywołanie się powiedzie, usługi gier Google Play zwracają intencję, która: wyświetli ekran, na którym użytkownik będzie mógł porównać swoje dane w profilu gracza.
  3. Aby rozpocząć aktywność, użyj opcji Intent z poprzedniego kroku.
// 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);
          // ...
        }});

Jeśli gra ma własną nazwę dla graczy, możesz ją dodać do wywołania interfejsu API. Dzięki temu Gry Play będą mogły ustawić pseudonimy graczy, którzy wysyłają znajomych zaproszenia z Twojej gry do „<nazwa-gry>”. od <nazwa-gry>” (Gry Play automatycznie dołączają „z: &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);
          // ...
        }});