Bu kılavuzda, Android Studio projelerinde Friends API'lerinin nasıl kullanılacağı açıklanmaktadır.
Arkadaşları yükle
Geçerli kullanıcıyla arkadaş olan oyuncuların listesini alabilir ve görüntüleyebilirsiniz (oyunda). Kullanıcı olarak, arkadaş listesine hangi oyunların erişeceğini kontrol edebilirsiniz. Arkadaş listesini alırken iznin gerekli olduğu durumları çözmelisiniz. Tüm bunlar, erişim isteğinde bulunma ve ardından arkadaş listesini kullanmayı basit bir görev haline getirmek için API'de bulunur. Arkadaş listesini yüklemek için şu 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 arkadaş listesine erişim izni zaten verilmişse) Google Play Games Hizmetleri, kullanıcının arkadaşlarını temsil eden ek açıklamalı bir
PlayerBuffer
döndürür. Oyuncunun arkadaş listesine erişim izni vermesi gerekiyorsa çağrı
FriendsResolutionRequiredException
ile başarısız olur. Henüz iletişim kutusu gösterilmiyor.- Bu istisna, oyuncudan izin isteme iletişimini tetikleyen bir
Intent
içerir. İzin iletişim kutusunu açmak için buIntent
uygulamasını hemen başlatabilirsiniz. BuIntent
öğesini yalnızca bir kez kullanabilirsiniz. Intent
adlı çocuğun 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
olursa kullanıcı izin vermemiştir veloadFriends()
,FriendsResolutionRequiredException
değerini döndürmeye devam eder.
- Bu istisna, oyuncudan izin isteme iletişimini tetikleyen bir
Aşağıdaki kod, arkadaş listesinin nasıl yükleneceğini 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 kod, izin isteği sonucunun nasıl işleneceğini 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üleme
Oyununuzun 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 daveti göndermelerine ve kabul etmelerine olanak tanır. Bu görünümde arkadaş listesine erişim izni gerekli değil. Buna ek olarak, oyununuzun Play Games Oyuncu Kimliklerinden ayrı, kendi oyuncu adı konsepti varsa bunları profil görünümüne aktarabilirsiniz. Böylece, bu adlar daha fazla bilgi için herhangi bir arkadaş davetine dahil edilebilir.
Başka bir oyuncunun profilini göstermek 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.- Çağrı başarılı olursa Google Play Games Hizmetleri, kullanıcının kendisini başka bir oyuncunun profiliyle karşılaştırabileceği bir ekran görüntüleyen bir Intent döndürür.
- Aktivite başlatmak için önceki adımdaki
Intent
tuşunu 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, Play Games'in, oyununuzun içinden arkadaş davetiyesi gönderen oyuncuların takma adlarını "<oyununuzun-adı> adlı oyundan "<oyuna özel-adı>" olarak ayarlamasına olanak tanır. Play Games otomatik olarak "<oyun-adınız>" ifadesini ekler:
// 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);
// ...
}});