अपने Java गेम कोड में Friends API लागू करने के लिए, इस गाइड में दिए गए चरणों का पालन करें.
दोस्तों की सूची लोड करना
मौजूदा उपयोगकर्ता के दोस्तों की सूची को गेम में वापस लाया और दिखाया जा सकता है. उपयोगकर्ता के तौर पर, यह कंट्रोल किया जा सकता है कि किन गेम के पास दोस्तों की सूची का ऐक्सेस हो. दोस्तों की सूची वापस पाने के लिए, आपको उस मामले को मैनेज करना होगा जहां अनुमति की ज़रूरत होती है. यह एपीआई में शामिल है, ताकि ऐक्सेस का अनुरोध करना और इसके बाद, दोस्तों की सूची का इस्तेमाल करना आसान हो. दोस्तों की सूची लोड करने के लिए, यह तरीका अपनाएं:
PlayersClient.loadFriends()
वाला तरीका कॉल करें. यह एक एसिंक्रोनस कॉल है, जोTask
ऑब्जेक्ट दिखाता है.- अगर कॉल पूरा हो जाता है (उपयोगकर्ता ने पहले ही दोस्तों की सूची का ऐक्सेस दिया है), तो Google Play Games Services, एनोटेट किया गया
PlayerBuffer
दिखाता है. इसमें उपयोगकर्ता के दोस्तों की जानकारी होती है. अगर खिलाड़ी को दोस्तों की सूची का ऐक्सेस देना है, तो कॉल
FriendsResolutionRequiredException
के साथ पूरा नहीं होगा. अभी तक कोई डायलॉग नहीं दिखाया गया है.- इस अपवाद में एक
Intent
होता है, जो उपयोगकर्ता से सहमति मांगने के लिए एक डायलॉग बॉक्स को ट्रिगर करता है. सहमति वाला डायलॉग बॉक्स खोलने के लिए, इसIntent
को तुरंत लॉन्च किया जा सकता है. इसIntent
का इस्तेमाल सिर्फ़ एक बार किया जा सकता है. अगर
Intent
की गतिविधि का नतीजाActivity.RESULT_OK
है, तो इसका मतलब है कि अनुमति दी गई है. दोस्तों की सूची वापस करने के लिए,loadFriends()
पर फिर से कॉल करें. अगर नतीजाActivity.RESULT_CANCELLED
है, तो इसका मतलब है कि उपयोगकर्ता ने सहमति नहीं दी है. साथ ही,loadFriends()
के तौर परFriendsResolutionRequiredException
दिखता रहेगा.
- इस अपवाद में एक
नीचे दिए गए कोड में, दोस्तों की सूची लोड करने का तरीका बताया गया है:
// 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;
}
नीचे दिए गए कोड में, सहमति के अनुरोध के नतीजे को मैनेज करने का तरीका बताया गया है:
/** 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.
}
}
}
किसी दूसरे खिलाड़ी की प्रोफ़ाइल देखना
अपने गेम में जाकर, किसी दूसरे खिलाड़ी की Play Games प्रोफ़ाइल देखी जा सकती है. इस व्यू की मदद से, खिलाड़ी उस खिलाड़ी को दोस्ती का न्योता भेज सकते हैं जिसे देखा जा रहा है. साथ ही, उस न्योते को स्वीकार भी कर सकते हैं. इस दृश्य के लिए मित्रों की सूची तक पहुंचने की आवश्यकता नहीं है. इसके अलावा, अगर आपके गेम में खिलाड़ियों के नामों का अपना कॉन्सेप्ट है, जो Play Games के गेमर आईडी से अलग है, तो इन्हें प्रोफ़ाइल व्यू में शामिल किया जा सकता है. इससे, अतिरिक्त जानकारी के लिए, उन्हें दोस्तों को भेजे जाने वाले न्योतों में शामिल किया जा सकता है.
किसी दूसरे खिलाड़ी की प्रोफ़ाइल देखने के लिए, यह तरीका अपनाएं:
PlayersClient.getCompareProfileIntent()
वाले तरीके को कॉल करें, जो एक एसिंक्रोनस कॉल है, जोTask
ऑब्जेक्ट दिखाता है.- अगर कॉल पूरा हो जाता है, तो Google Play की गेम सेवाएं, एक इंटेंट दिखाती हैं. इस स्क्रीन पर उपयोगकर्ता, दूसरे खिलाड़ी की प्रोफ़ाइल से अपनी तुलना कर सकता है.
- कोई गतिविधि शुरू करने के लिए, पिछले चरण में दिए गए
Intent
का इस्तेमाल करें.
// 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);
// ...
}});
अगर गेम में खिलाड़ियों के लिए कोई नाम तय किया गया है, तो उन्हें एपीआई कॉल में जोड़ा जा सकता है. इससे Play Games, उन खिलाड़ियों के निकनेम को सेट कर पाता है जो आपके गेम से "<your-game-name> के <game-specific-name>" पर दोस्तों को न्योता भेजते हैं (Play Games अपने-आप "<your-game-name> से" जुड़ जाता है):
// 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);
// ...
}});