Java oyun kodunuza Friends API'lerini uygulamak için bu kılavuzdaki adımları kullanın.
Arkadaş yükle
Oyunda geçerli kullanıcıyla arkadaş olan oyuncuların listesini alıp görüntüleyebilirsiniz. Kullanıcı olarak hangi oyunların arkadaş listesine erişimi olduğunu kontrol etmek mümkündür. Arkadaş listesini alırken, iznin gerekli olduğu destek kaydını yönetmeniz gerekir. Tüm bu işlemler, API isteme dahil edilir. Daha sonra erişim isteğinde bulunulması ve ardından arkadaş listesi kullanımı basit bir görev haline gelir. Arkadaş listesini yüklemek için aşağıdaki adımları uygulayın:
Task
nesnesi döndüren eşzamansız bir çağrı olanPlayersClient.loadFriends()
yöntemini çağırın.- Arama başarılı olursa (kullanıcıya zaten arkadaş listesine erişim izni verildiyse) Google Play oyun hizmetleri, kullanıcının arkadaşlarını temsil eden
ek açıklamalı bir
PlayerBuffer
uygulaması döndürür. Oynatıcının arkadaş listesine erişim izni vermesi durumunda, arama bir
FriendsResolutionRequiredException
ile başarısız olur. Henüz iletişim kutusu gösterilmiyor.- Bu istisna, oyuncudan izin isteme iletişim kutusunu tetikleyen bir
Intent
içerir. İzin iletişim kutusunu açmak için hemenIntent
uygulamasını başlatabilirsiniz. BuIntent
öğesini yalnızca bir kez kullanabilirsiniz. Intent
etkinliğinin sonucuActivity.RESULT_OK
ise izin verildi. Arkadaş listesini döndürmek içinloadFriends()
adlı kişiyi tekrar arayın. SonuçActivity.RESULT_CANCELLED
ise kullanıcı izin vermez veloadFriends()
,FriendsResolutionRequiredException
etiketini döndürmeye devam eder.
- Bu istisna, oyuncudan izin isteme iletişim kutusunu tetikleyen bir
Aşağıdaki kod, arkadaş listesinin yüklenmesinin 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.
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;
}
Aşağıdaki kod, izin isteğinden gelen sonucun nasıl ele alınacağını gösterir:
/** 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üleyin
Oyun içinden, başka bir oyuncunun Play Games profilinin görünümünü görüntüleyebilirsiniz. Bu görünüm, oyuncuların görüntülenen oyuncu için arkadaşlık teklifleri göndermelerine ve kabul etmelerine olanak tanır. Bu görünümün arkadaş listesine erişimi gerekmez. Ayrıca, oyununuzun Play Games Oyuncu Kimliklerinden ayrı olarak kendi oyuncu adları konsepti varsa bunları ek bağlam için herhangi bir arkadaşlık davetiyesine dahil edebilmeleri için profil görünümüne aktarabilirsiniz.
Başka bir oyuncunun profilini görmek için şu adımları uygulayın:
Task
nesnesi döndüren eşzamansız bir çağrı olanPlayersClient.getCompareProfileIntent()
yöntemini çağırın.- Arama başarılı olursa Google Play oyun hizmetleri, kullanıcının kendisini başka bir oyuncunun profiliyle karşılaştırabileceği bir ekran gösteren bir Amaç döndürür.
- Bir etkinlik başlatmak için önceki adımdan
Intent
kullanın.
// 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);
// ...
}});
Oyunun oyuncular için kendi adı varsa bunlar API çağrısına eklenebilir. Bu ayar, Play Games'in oyununuz içindeki arkadaş davetiyelerini "<oyununuzun-adı> adlı oyundan <oyuna özgü ad>" şeklinde gönderen oyuncuların takma adını belirlemesine olanak sağlar (Play Games otomatik olarak "<oyununuzun-adı>" ifadesinden sonra gelir):
// 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);
// ...
}});