Gunakan langkah-langkah dalam panduan ini untuk menerapkan Friends API dalam kode game Java Anda.
Memuat teman
Anda dapat mengambil dan menampilkan (dalam game) daftar pemain yang berteman dengan pengguna saat ini. Sebagai pengguna, Anda dapat mengontrol game yang memiliki akses ke daftar teman. Saat mengambil daftar teman, Anda harus menangani kasus yang memerlukan izin. Semua ini dienkapsulasi dalam API untuk membuat permintaan akses, lalu menggunakan daftar teman sebagai tugas yang mudah. Untuk memuat daftar teman, ikuti langkah-langkah berikut:
- Panggil metode
PlayersClient.loadFriends()
, yang merupakan panggilan asinkron yang menampilkan objekTask
. - Jika panggilan berhasil (pengguna sudah memberikan akses ke daftar
teman), Layanan game Google Play akan menampilkan
PlayerBuffer
yang dianotasi dan mewakili teman pengguna. Jika pemain perlu memberikan akses ke daftar teman, panggilan akan gagal dengan
FriendsResolutionRequiredException
. Belum ada dialog yang ditampilkan.- Pengecualian ini berisi
Intent
yang memicu dialog untuk meminta izin pemain. Anda dapat segera meluncurkanIntent
ini untuk membuka dialog izin. Anda hanya dapat menggunakanIntent
ini satu kali. Jika hasil aktivitas
Intent
adalahActivity.RESULT_OK
, izin akan diberikan. PanggilloadFriends()
lagi untuk menampilkan daftar teman. Jika hasilnya adalahActivity.RESULT_CANCELLED
, pengguna tidak mengizinkan danloadFriends()
akan terus menampilkanFriendsResolutionRequiredException
.
- Pengecualian ini berisi
Kode berikut menunjukkan cara menerapkan pemuatan daftar teman:
// 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.
Games.getPlayersClient(this, GoogleSignIn.getLastSignedInAccount(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;
}
Kode berikut menunjukkan cara menangani hasil dari permintaan izin:
/** 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.
}
}
}
Melihat profil pemain lain
Anda dapat menampilkan tampilan profil Play Game pemain lain dari dalam game Anda. Dengan tampilan ini, pemain dapat mengirim dan menerima undangan teman untuk pemain yang sedang dilihat. Tampilan ini tidak memerlukan akses ke daftar teman. Selain itu, jika game Anda memiliki konsep sendiri tentang nama pemain yang terpisah dari ID Pemain Game Play Game, Anda dapat meneruskannya ke tampilan profil sehingga mereka dapat disertakan di undangan teman apa pun untuk konteks tambahan.
Untuk menampilkan profil pemain lain, ikuti langkah-langkah berikut:
- Panggil metode
PlayersClient.getCompareProfileIntent()
, yang merupakan panggilan asinkron yang menampilkan objekTask
. - Jika panggilan berhasil, Layanan game Google Play akan menampilkan Intent yang akan menampilkan layar tempat pengguna dapat membandingkan diri dengan profil pemain lain.
- Gunakan
Intent
dari langkah sebelumnya untuk memulai aktivitas.
// Retrieve and launch an Intent to show a player profile within the game.
Games.getPlayersClient(this, GoogleSignIn.getLastSignedInAccount(this))
.getCompareProfileIntent(otherPlayerId)
.addOnSuccessListener(new OnSuccessListener<Intent>() {
@Override
public void onSuccess(Intent intent) {
startActivityForResult(intent, RC_SHOW_PROFILE);
// ...
}});
Jika game memiliki namanya sendiri untuk pemain, ini dapat ditambahkan ke panggilan API. Hal ini memungkinkan Play Game menetapkan nama panggilan pemain yang mengirim undangan teman dari dalam game Anda ke "<game-specific-name> dari <your-game-name>" (Play Game otomatis menambahkan "dari <your-game-name>"):
// 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.
Games.PlayersClient(this, GoogleSignIn.getLastSignedInAccount(this))
.getCompareProfileIntentWithAlternativeNameHints(otherPlayerId, otherPlayerInGameName, currentPlayerInGameName)
.addOnSuccessListener(new OnSuccessListener<Intent>() {
@Override
public void onSuccess(Intent intent) {
startActivityForResult(intent, RC_SHOW_PROFILE);
// ...
}});