Google ile Giriş API'sinin desteğinin sonlandırılmasının ardından, 2026'da Games v1 SDK'sını kaldırıyoruz. Şubat 2025'ten sonra games v1 SDK'sıyla yeni entegre edilen oyunları Google Play'de yayınlayamayacaksınız. Bunun yerine games v2 SDK'sını kullanmanızı öneririz.
Önceki Games v1 entegrasyonlarına sahip mevcut uygulamalar birkaç yıl daha çalışmaya devam edecek olsa da
Haziran 2025'ten itibaren
v2'ye geçiş yapmanız
önerilir.
Bu kılavuz, Play Games Hizmetleri v1 SDK'sının kullanımıyla ilgilidir. En son SDK sürümü hakkında bilgi için v2 belgelerine bakın.
Java oyun kodunuzda Arkadaşlar API'lerini uygulamak için bu kılavuzdaki adımları kullanın.
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,Task
nesnesi 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
PlayerBuffer
döndürür. Oyuncunun arkadaş listesine erişim izni vermesi gerekiyorsa çağrı,
FriendsResolutionRequiredException
ile 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
Intent
içerir. İzin iletişim kutusu açmak için buIntent
işlevini hemen başlatabilirsiniz. BuIntent
yalnızca bir kez kullanılabilir. Intent
etkinliğinin sonucuActivity.RESULT_OK
ise izin verilmiştir. Arkadaş listesini döndürmek içinloadFriends()
işlevini tekrar çağırın. SonuçActivity.RESULT_CANCELLED
ise 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 yüklenmesinin nasıl uygulanacağı 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.
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 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,Task
nesnesi 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
Intent
simgesini 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);
// ...
}});
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, "<your-game-name> oyunundan" 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 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);
// ...
}});