Java oyun kodunuza Friends API'si uygulamak için bu kılavuzdaki adımları kullanın.
Arkadaşları yükle
Arkadaş olan oyuncuların listesini alabilir ve görüntüleyebilirsiniz (oyunda) geçerli kullanıcıyla aynı. Kullanıcı olarak, oyun seçiciler arasında arkadaş listesine erişme. Arkadaş listesini aldığınızda, durumlarda işe yarıyor. Bunların tümü, aşağıdakileri yapmak için API'ye dahil edilir: erişim isteğinde bulunmayı ve ardından arkadaş listesini kullanmayı özellikle kolaylaştıran görevi görebilir. Arkadaş listesini yüklemek için şu adımları uygula:
- Şunu çağırın:
PlayersClient.loadFriends()
yöntemidir. Bu yöntem, birTask
nesne olarak tanımlar. - Arama başarılı olursa (kullanıcı, arkadaşlarına zaten erişim izni verdiyse)
listesi olduğunda), Google Play Games hizmetleri
PlayerBuffer
temsil eder. Oyuncunun arkadaş listesine erişim izni vermesi gerekiyorsa çağrı CANNOT TRANSLATE
FriendsResolutionRequiredException
. Henüz iletişim kutusu gösterilmiyor.- Bu istisna, şu soruyu soran bir iletişim kutusunu tetikleyen
Intent
içeriyor: oynatıcısını kontrol edin. Şurayı açmak için buIntent
hemen başlatabilirsiniz: iletişim kutusunu açın. BuIntent
öğesini yalnızca bir kez kullanabilirsiniz. Intent
etkinliğinin sonucuActivity.RESULT_OK
ise izni verildi. Arkadaşları geri vermek içinloadFriends()
adlı kişiyi tekrar arayın liste'ye dokunun. SonuçActivity.RESULT_CANCELLED
ise kullanıcı şunu yapmıştır: izin vermeyecek veloadFriends()
adlı kullanıcı şunu geri vermeye devam edecek:FriendsResolutionRequiredException
.
- Bu istisna, şu soruyu soran bir iletişim kutusunu tetikleyen
Aşağıdaki kod, arkadaş listesi yükleme işleminin nasıl uygulanacağını gösterir:
// 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;
}
Aşağıdaki kodda, izin isteği sonucunun nasıl ele alınacağı gösterilmektedir:
/** 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.
}
}
}
Başka bir oyuncunun profilini görüntüleme
Şu konumdan başka bir oyuncunun Play Games profilinin görünümünü görüntüleyebilirsiniz: bir çözüm bulmanız gerekir. Bu görünüm, oyuncuların arkadaş davetleri göndermelerine ve kabul etmelerine olanak tanır gösterilen oynatıcıyı oluşturur. Bu görünüm arkadaşlara erişim gerektirmez liste'ye dokunun. Ayrıca, oyununuzda ayrı bir oyuncu adı kavramı varsa kullanıyorsanız, bunları profil görünümüne iletebilirsiniz. Böylece arkadaş davetlerine ek bağlam bilgisi sağlayabilirsiniz.
Başka bir oyuncunun profilini göstermek için şu adımları izleyin:
- Şunu çağırın:
PlayersClient.getCompareProfileIntent()
yöntemidir. Bu yöntem, birTask
nesne olarak tanımlar. - Arama başarılı olursa Google Play Games hizmetleri şu Intent'i döndürür: Kullanıcının kendisini başka bir cihazla karşılaştırabileceği bir ekran görüntüler e-posta adresini kullanabilirsiniz.
- Aktivite başlatmak için önceki adımda sağlanan
Intent
öğesini kullanın.
// 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);
// ...
}});
Oyunun oyuncular için kendi adı varsa bunlar API çağrısına eklenebilir. Bu şekilde Play Games, arkadaşınıza gönderen oyuncuların takma adını belirleyebilir oyununuzdan "<game-specific-name> adresine gelen davetler DÜŞEYARA'yı <oyununuzun-adı>" (Play Games otomatik olarak " <oyununuzun-adı>"):
// 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);
// ...
}});