অ্যান্ড্রয়েড গেমে বন্ধুরা

এই নির্দেশিকায় অ্যান্ড্রয়েড স্টুডিও প্রজেক্টে ফ্রেন্ডস এপিআই (Friends APIs) কীভাবে ব্যবহার করতে হয় তা বর্ণনা করা হয়েছে।

বন্ধুদের লোড করুন

আপনি বর্তমান ব্যবহারকারীর বন্ধু খেলোয়াড়দের একটি তালিকা (গেমের মধ্যে) পুনরুদ্ধার এবং প্রদর্শন করতে পারেন। একজন ব্যবহারকারী হিসেবে, কোন কোন গেম বন্ধুদের তালিকা অ্যাক্সেস করতে পারবে তা নিয়ন্ত্রণ করা সম্ভব। যখন আপনি বন্ধুদের তালিকা পুনরুদ্ধার করবেন, তখন অনুমতির প্রয়োজন হলে আপনাকে সেই পরিস্থিতিটি সামলাতে হবে। অ্যাক্সেসের জন্য অনুরোধ করা এবং পরবর্তীতে বন্ধুদের তালিকা ব্যবহার করাকে একটি সহজ কাজ করার জন্য এই সবকিছু এপিআই-এর মধ্যে অন্তর্ভুক্ত করা হয়েছে। বন্ধুদের তালিকা লোড করতে, এই ধাপগুলো অনুসরণ করুন:

  1. PlayersClient.loadFriends() মেথডটি কল করুন, যা একটি অ্যাসিঙ্ক্রোনাস কল এবং একটি Task অবজেক্ট রিটার্ন করে।
  2. কলটি সফল হলে (ব্যবহারকারীকে আগে থেকেই বন্ধুদের তালিকায় অ্যাক্সেস দেওয়া থাকলে), গুগল প্লে গেমস সার্ভিসেস একটি টীকাযুক্ত PlayerBuffer ফেরত দেয় যা ব্যবহারকারীর বন্ধুদের প্রতিনিধিত্ব করে।
  3. প্লেয়ারকে যদি ফ্রেন্ডস লিস্টে অ্যাক্সেস দেওয়ার প্রয়োজন হয়, তাহলে FriendsResolutionRequiredException ত্রুটির কারণে কলটি ব্যর্থ হয়। এখনও কোনো ডায়ালগ দেখানো হয়নি।

    1. এই এক্সেপশনটিতে একটি Intent রয়েছে যা প্লেয়ারের কাছে সম্মতি চাওয়ার জন্য একটি ডায়ালগ চালু করে। আপনি সম্মতির ডায়ালগটি খোলার জন্য এই Intent অবিলম্বে চালু করতে পারেন। আপনি এই Intent শুধুমাত্র একবার ব্যবহার করতে পারবেন।
    2. যদি 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.
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;
}

নিম্নলিখিত কোডটি দেখায় কিভাবে সম্মতির অনুরোধের ফলাফল পরিচালনা করতে হয়:

/** 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.
    }
  }
}

অন্য খেলোয়াড়ের প্রোফাইল দেখুন

আপনি আপনার গেমের ভেতর থেকে অন্য কোনো খেলোয়াড়ের প্লে গেমস প্রোফাইল দেখতে পারেন। এই ভিউয়ের মাধ্যমে খেলোয়াড়রা সেই খেলোয়াড়কে বন্ধুত্বের আমন্ত্রণ পাঠাতে ও গ্রহণ করতে পারে। এই ভিউ দেখার জন্য বন্ধুদের তালিকায় প্রবেশের প্রয়োজন হয় না। এছাড়াও, যদি আপনার গেমে প্লে গেমস গেমার আইডি থেকে আলাদা খেলোয়াড়ের নামের নিজস্ব কোনো ধারণা থাকে, তবে আপনি সেগুলোকে প্রোফাইল ভিউতে যুক্ত করতে পারেন, যাতে অতিরিক্ত তথ্যের জন্য যেকোনো বন্ধুত্বের আমন্ত্রণে সেগুলো অন্তর্ভুক্ত করা যায়।

অন্য খেলোয়াড়ের প্রোফাইল দেখতে, এই ধাপগুলো অনুসরণ করুন:

  1. PlayersClient.getCompareProfileIntent() মেথডটি কল করুন, যেটি একটি অ্যাসিঙ্ক্রোনাস কল এবং একটি Task অবজেক্ট রিটার্ন করে।
  2. কলটি সফল হলে, গুগল প্লে গেমস সার্ভিসেস একটি ইন্টেন্ট ফেরত পাঠায়, যা এমন একটি স্ক্রিন প্রদর্শন করবে যেখানে ব্যবহারকারী অন্য একজন খেলোয়াড়ের প্রোফাইলের সাথে নিজেকে তুলনা করতে পারবেন।
  3. একটি অ্যাক্টিভিটি শুরু করতে পূর্ববর্তী ধাপের Intent ব্যবহার করুন।
// 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);
          // ...
        }});

যদি গেমটির প্লেয়ারদের জন্য নিজস্ব নাম থাকে, তবে সেগুলো এপিআই কলে যোগ করা যেতে পারে। এর ফলে প্লে গেমস আপনার গেমের ভেতর থেকে বন্ধুত্বের আমন্ত্রণ পাঠানো প্লেয়ারদের নিকনেম "<গেম-নির্দিষ্ট-নাম> <আপনার-গেমের-নাম> থেকে" হিসেবে সেট করতে পারে (প্লে গেমস স্বয়ংক্রিয়ভাবে "<আপনার-গেমের-নাম>" যোগ করে দেয়):

// 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);
          // ...
        }});