Bu kılavuzda, Android Studio projelerinde Arkadaşlar API'lerinin nasıl kullanılacağı açıklanmaktadır.
Arkadaşları yükleme
Geçerli kullanıcının arkadaşı olan oyuncuların listesini alıp (oyunda) görüntüleyebilirsiniz. Kullanıcı olarak, hangi oyunların arkadaş listesine erişebileceğini kontrol edebilirsiniz. Arkadaş listesini aldığınızda izin gerektiren durumu ele almanız gerekir. Bu işlemlerin tümü, erişim isteğinde bulunmayı ve ardından arkadaş listesini kullanmayı kolay bir görev haline getirmek için API'de kapsüllenmiştir. Arkadaş listesini yüklemek için aşağıdaki adımları uygulayın:
PlayersClient.loadFriends()yöntemini çağırın. Bu yöntem,Tasknesnesi döndüren eşzamansız bir çağrıdır.- Arama başarılı olursa (kullanıcı, arkadaş listesine erişim izni vermişse) Google Play Games Hizmetleri, kullanıcının arkadaşlarını temsil eden ek açıklamalı bir
PlayerBufferdöndürür. Oyuncunun arkadaş listesine erişim izni vermesi gerekiyorsa çağrı,
FriendsResolutionRequiredExceptionile başarısız olur. Henüz herhangi bir iletişim kutusu gösterilmedi.- Bu istisna, oynatıcıdan izin isteyen bir iletişim kutusunu tetikleyen bir
Intentiçerir. İzin iletişim kutusu açmak için buIntentişlevini hemen başlatabilirsiniz. BuIntentyalnızca bir kez kullanılabilir. Intentetkinliğinin sonucuActivity.RESULT_OKise izin verilmiştir. Arkadaş listesini döndürmek içinloadFriends()işlevini tekrar çağırın. SonuçActivity.RESULT_CANCELLEDise kullanıcı izin vermemiştir veloadFriends()döndürülmeye devam ederFriendsResolutionRequiredException.
- Bu istisna, oynatıcıdan izin isteyen bir iletişim kutusunu tetikleyen bir
Aşağıdaki kodda arkadaş listesinin nasıl yükleneceği gösterilmektedir:
// 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ğinden elde edilen sonucun nasıl işleneceği 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
Oyununuzda başka bir oyuncunun Play Games profilini görüntüleyebilirsiniz. Bu görünüm, oyuncuların görüntülenen oyuncu için arkadaş daveti göndermesine ve kabul etmesine olanak tanır. Bu görünüm için arkadaş listesine erişim gerekmez. Ayrıca, oyununuzda Play Games Oyuncu Kimliklerinden ayrı bir oyuncu adı kavramı varsa bunları profil görünümüne iletebilirsiniz. Böylece, ek bağlam için arkadaş davetlerine dahil edilebilirler.
Başka bir oyuncunun profilini göstermek için şu adımları uygulayın:
PlayersClient.getCompareProfileIntent()yöntemini çağırın. Bu yöntem,Tasknesnesi döndüren eşzamansız bir çağrıdır.- Çağrı 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österecek bir Amaç döndürür.
- Etkinlik başlatmak için önceki adımdaki
Intentsimgesini 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);
// ...
}});
Oyuncular için oyunun kendi adı varsa bu adlar API çağrısına eklenebilir. Bu sayede Play Games, oyununuzdan arkadaşlık daveti gönderen oyuncuların takma adını "<your-game-name> oyunundan <game-specific-name>" olarak ayarlayabilir. Play Games, "from <your-game-name>" ifadesini otomatik olarak 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 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);
// ...
}});