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:
- Wywołaj funkcję
PlayersClient.loadFriends()
która jest wywołaniem asynchronicznym zwracającymTask
. - 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. 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.- Ten wyjątek zawiera element
Intent
, który powoduje wyświetlenie okna z pytaniem . Możesz natychmiast uruchomić to urządzenieIntent
, aby otworzyć okna z prośbą o zgodę na przetwarzanie danych osobowych. Tego urządzeniaIntent
możesz użyć tylko raz. Jeśli wynikiem aktywności użytkownika
Intent
jestActivity.RESULT_OK
, użytkownik wyraził zgodę. Zadzwoń ponownie do użytkownikaloadFriends()
, aby odesłać znajomych z listy. Jeśli wynik toActivity.RESULT_CANCELLED
, użytkownik to zrobił nie wyrażą zgody, aloadFriends()
będzie nadal wracałFriendsResolutionRequiredException
- Ten wyjątek zawiera element
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:
- Wywołaj funkcję
PlayersClient.getCompareProfileIntent()
która jest wywołaniem asynchronicznym zwracającymTask
. - 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.
- 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: <nazwa-gry>"):
// 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);
// ...
}});