W tym przewodniku opisujemy, jak używać interfejsów API Friends w Projekty w Android Studio.
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
obiektu. - Jeśli połączenie się powiedzie (użytkownik przyznał już dostęp do znajomych
lista), usługi gier Google Play zwracają adnotacje z adnotacjami.
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 wczytać listę 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
obiektu. - Jeśli wywołanie się powiedzie, usługi gier Google Play zwraca 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);
// ...
}});