Ten przewodnik zawiera informacje o sposobach korzystania z interfejsów API Znajomi w projektach Android Studio.
Wczytaj znajomych
Możesz pobrać i wyświetlić w grze listę graczy, którzy są znajomymi bieżącego użytkownika. Użytkownik może kontrolować, które gry mają dostęp do listy znajomych. Podczas pobierania listy znajomych musisz obsłużyć przypadek, w którym wymagane jest uprawnienie. Wszystko to jest zawarte w interfejsie API, aby ułatwić żądanie dostępu i korzystanie z listy znajomych. Aby załadować listę znajomych, wykonaj te czynności:
- Wywołaj metodę
PlayersClient.loadFriends(), która jest wywołaniem asynchronicznym zwracającym obiektTask. - Jeśli wywołanie się powiedzie (użytkownik przyznał już dostęp do listy znajomych), usługi Gier Google Play zwrócą obiekt
PlayerBufferz adnotacjami, który reprezentuje znajomych użytkownika. Jeśli gracz musi przyznać dostęp do listy znajomych, wywołanie zakończy się niepowodzeniem i wyświetli się błąd
FriendsResolutionRequiredException. Nie wyświetlono jeszcze żadnych okien.- Ten wyjątek zawiera
Intent, który wywołuje okno z prośbą o zgodę na przetwarzanie danych osobowych gracza. Możesz natychmiast uruchomić tenIntent, aby otworzyć okno z prośbą o zgodę na przetwarzanie danych osobowych. Możesz użyć tegoIntenttylko raz. Jeśli wynikiem działania
.IntentjestActivity.RESULT_OK, oznacza to, że użytkownik wyraził zgodę. Zadzwoń ponownie pod numerloadFriends(), aby przywrócić listę znajomych. Jeśli wynikiem jestActivity.RESULT_CANCELLED, użytkownik nie wyraził zgody, aloadFriends()będzie nadal zwracać wartośćFriendsResolutionRequiredException.
- Ten wyjątek zawiera
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;
}
Poniższy kod pokazuje, jak obsługiwać wynik żądania zgody:
/** 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
W swojej grze możesz wyświetlać profil innego gracza w Grach Play. Umożliwia to graczom wysyłanie i akceptowanie zaproszeń do znajomych w przypadku wyświetlanego gracza. Nie wymaga to dostępu do listy znajomych. Dodatkowo, jeśli Twoja gra ma własną koncepcję nazw graczy, która jest oddzielona od identyfikatorów graczy w Grach Play, możesz przekazać te nazwy do widoku profilu, aby można je było uwzględnić w zaproszeniach do znajomych w celu uzyskania dodatkowego kontekstu.
Aby wyświetlić profil innego gracza:
- Wywołaj metodę
PlayersClient.getCompareProfileIntent(), która jest wywołaniem asynchronicznym zwracającym obiektTask. - Jeśli wywołanie się powiedzie, usługi Gier Google Play zwrócą obiekt Intent, który wyświetli ekran, na którym użytkownik może porównać swój profil z profilem innego gracza.
- Użyj
Intentz poprzedniego kroku, aby rozpocząć aktywność.
// 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żna ją dodać do wywołania interfejsu API. Dzięki temu Usługi Play mogą ustawić pseudonim graczy, którzy wysyłają zaproszenia do grona znajomych z poziomu Twojej gry, na „<nazwa-specyficzna-dla-gry> z <nazwa-Twojej-gry>” (Usługi Play automatycznie dodają „z <nazwa-Twojej-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 authenticated.
// 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);
// ...
}});