অ্যান্ড্রয়েড গেমের জন্য সাইন-ইন করুন

Google Play গেম পরিষেবাগুলির কার্যকারিতা অ্যাক্সেস করার জন্য, আপনার গেমটিকে সাইন-ইন করা খেলোয়াড়ের অ্যাকাউন্ট সরবরাহ করতে হবে৷ এই ডকুমেন্টেশন বর্ণনা করে কিভাবে আপনার গেমে একটি বিরামহীন সাইন-ইন অভিজ্ঞতা বাস্তবায়ন করতে হয়।

প্লে গেমস পরিষেবা v2 SDK অনেকগুলি উন্নতি নিয়ে আসে যা আপনার গেমে সাইন ইন করা ব্যবহারকারীর সংখ্যা বাড়ায় এবং বিকাশকে সহজ করে তোলে:

  • ব্যবহারকারীদের জন্য উন্নতি:
    • একটি ডিফল্ট অ্যাকাউন্ট নির্বাচন করার পরে, ব্যবহারকারীরা প্রম্পটের সাথে ইন্টারঅ্যাক্ট করার প্রয়োজন ছাড়াই লগ-ইন করে।
    • প্লে গেম পরিষেবাগুলিতে সাইন-ইন করতে বা একটি নতুন অ্যাকাউন্ট তৈরি করতে ব্যবহারকারীদের আর প্লে গেম অ্যাপ ডাউনলোড করতে হবে না।
    • ব্যবহারকারীরা এখন একটি একক পৃষ্ঠা থেকে একাধিক গেমের জন্য তাদের প্লে গেম পরিষেবা অ্যাকাউন্টগুলি পরিচালনা করতে পারে।
  • বিকাশকারীদের জন্য উন্নতি:
    • ক্লায়েন্ট কোডের আর সাইন-ইন বা সাইন-আউট প্রবাহ পরিচালনা করার প্রয়োজন নেই, কারণ খেলা শুরু হলে লগইন স্বয়ংক্রিয়ভাবে ট্রিগার হয় এবং OS সেটিংসে অ্যাকাউন্ট পরিচালনা করা হয়।

নতুন ক্লায়েন্ট ইন্টিগ্রেশন

এই বিভাগটি দেখায় কিভাবে প্লে গেম সার্ভিস সাইন ইন v2 এর সাথে একটি নতুন ক্লায়েন্ট ইন্টিগ্রেশন করতে হয়।

নির্ভরতা যোগ করুন

আপনার অ্যাপের রুট-লেভেল build.gradle ফাইলে Play Game Services SDK নির্ভরতা যোগ করুন। আপনি যদি Gradle ব্যবহার করেন, তাহলে আপনি নিম্নলিখিতভাবে নির্ভরতা যোগ বা আপডেট করতে পারেন:

dependencies {
 implementation "com.google.android.gms:play-services-games-v2:+"
}

প্রকল্প আইডি সংজ্ঞায়িত করুন

আপনার অ্যাপে Play Games পরিষেবা SDK প্রোজেক্ট আইডি যোগ করতে, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন:

  1. আপনার অ্যাপের AndroidManifest.xml ফাইলে, নিম্নলিখিত <meta-data> উপাদান এবং <application> উপাদানে গুণাবলী যোগ করুন:

    <manifest>
      <application>
        <meta-data android:name="com.google.android.gms.games.APP_ID"
                   android:value="@string/game_services_project_id"/>
      </application>
    </manifest>
    

    স্ট্রিং রিসোর্স রেফারেন্স @string/game_services_project_id আপনার গেমের গেম পরিষেবা প্রকল্প আইডি মান হিসাবে ব্যবহার করে সংজ্ঞায়িত করুন। আপনার গেম পরিষেবা প্রকল্প আইডি Google Play কনসোলের কনফিগারেশন পৃষ্ঠায় আপনার গেমের নামের নিচে পাওয়া যাবে।

  2. আপনার res/values/strings.xml ফাইলে, একটি স্ট্রিং রিসোর্স রেফারেন্স যোগ করুন এবং মান হিসাবে আপনার প্রকল্প আইডি সেট করুন। Google Play Console-এ, আপনি কনফিগারেশন পৃষ্ঠায় আপনার গেমের নামের নিচে আপনার প্রোজেক্ট আইডি খুঁজে পেতে পারেন। উদাহরণ স্বরূপ:

    <!-- res/values/strings.xml -->
    <resources>
      <!-- Replace 0000000000 with your game’s project id. Example value shown above.  -->
      <string translatable="false"  name="game_services_project_id"> 0000000000 </string>
    </resources>
    

SDK আরম্ভ করুন

আপনার Application ক্লাসের onCreate(..) কলব্যাকে Play Games SDK চালু করুন৷

import com.google.android.gms.games.PlayGamesSdk;

...

@Override
public void onCreate(){
  super.onCreate();
  PlayGamesSdk.initialize(this);
}

সাইন ইন ফলাফল পান

আপনার গেমটি চালু হলে, এটি সর্বদা ব্যবহারকারীকে সাইন ইন করার চেষ্টা করবে৷ ব্যবহারকারীকে প্রমাণীকরণ করতে, আপনাকে অবশ্যই যাচাই করতে হবে যে ব্যবহারকারী সফলভাবে সাইন ইন করেছেন এবং তারপর তাদের প্লেয়ার আইডি পান৷

সাইন ইন করার প্রচেষ্টা যাচাই করতে, GamesSignInClient.isAuthenticated() কল করুন এবং ফলাফলগুলি পুনরুদ্ধার করতে addOnCompleteListener ব্যবহার করুন৷ উদাহরণ স্বরূপ:

GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());

gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
  boolean isAuthenticated =
    (isAuthenticatedTask.isSuccessful() &&
     isAuthenticatedTask.getResult().isAuthenticated());

  if (isAuthenticated) {
    // Continue with Play Games Services
  } else {
    // Disable your integration with Play Games Services or show a
    // login button to ask  players to sign-in. Clicking it should
    // call GamesSignInClient.signIn().
  }
});

গেমটি চালু হওয়ার সময় ব্যবহারকারী যদি সাইন ইন না করা বেছে নেন, তাহলে আপনি ঐচ্ছিকভাবে প্লে গেমস আইকন সহ একটি বোতাম দেখানো চালিয়ে যেতে বেছে নিতে পারেন এবং ব্যবহারকারী বোতাম টিপে GamesSignInClient.signIn() এ কল করে আবার ব্যবহারকারীকে সাইন ইন করার চেষ্টা করতে পারেন।

ব্যবহারকারী সাইন ইন করেছেন তা যাচাই করার পরে, আপনি ব্যবহারকারীকে সনাক্ত করতে প্লেয়ার আইডি পুনরুদ্ধার করতে পারেন। উদাহরণ স্বরূপ:

PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
    // Get PlayerID with mTask.getResult().getPlayerId()
  }
);

প্লে গেমস সার্ভিস সাইন ইন v2 এ মাইগ্রেট করুন

এই বিভাগটি বর্ণনা করে যে কীভাবে আপনার ক্লায়েন্ট কোড প্লে গেম সার্ভিস v1 থেকে v2 তে স্থানান্তর করতে হয়।

সাইন-ইন সাফল্য বাড়ানোর জন্য নতুন SDK-তে চারটি বড় পরিবর্তন রয়েছে যা আপনার সচেতন হওয়া উচিত:

  1. আপনার গেম চালু হলে সাইন-ইন স্বয়ংক্রিয়ভাবে ট্রিগার হয়। সাইন-ইন করার জন্য GoogleSignIn SDK-এর GoogleSignInClient ব্যবহার করার পরিবর্তে, আপনি স্বয়ংক্রিয় সাইন-ইন প্রচেষ্টার ফলাফল আনতে GamesSignInClient.isAuthenticated() ব্যবহার করতে পারেন৷
  2. ক্লায়েন্ট ফ্যাক্টরি ক্লাসের জন্য আর GoogleSignInAccount অবজেক্ট পাস করার প্রয়োজন হবে না। অতিরিক্ত OAuth স্কোপের অনুরোধ করা যাবে না ( GAMES_LITE স্বয়ংক্রিয়ভাবে অনুরোধ করা হবে)।
  3. Play Games পরিষেবা SDK-এর মধ্যে GamesSignInClient.requestServerSideAccess() ব্যবহার করে প্রমাণীকরণ টোকেনগুলি এখন প্রদান করা হয়।
  4. সাইন আউট পদ্ধতিটি সরানো হয়েছে এবং প্লে গেম পরিষেবাগুলি থেকে সাইন ইন বা সাইন আউট করার জন্য আমাদের আর একটি ইন-গেম বোতামের প্রয়োজন হবে না৷

উপরন্তু, গেমটি চালু হলে স্বয়ংক্রিয় সাইন-ইন করার কারণে আপনার গেমটি অতিরিক্ত লগইন অনুভব করবে। ফলস্বরূপ, আপনার গেমটি যাতে লগইন অনুরোধের কোটা অতিক্রম না করে তা নিশ্চিত করতে আপনার কোটা ব্যবস্থাপনা পর্যালোচনা করা উচিত।

নতুন SDK Maven সংগ্রহস্থলকে লক্ষ্য করুন

আপনি যদি Gradle বিল্ড সিস্টেম ব্যবহার করেন, তাহলে আপনার মডিউলের build.gradle ফাইলে com.google.android.gms:play-services-games-v2:+ আর্টিফ্যাক্টে আপনার নির্ভরতা পরিবর্তন করে এটি করা যেতে পারে। উদাহরণ স্বরূপ:

dependencies {
 implementation "com.google.android.gms:play-services-games-v2:+"
}

SDK আরম্ভ করুন

আপনার Application ক্লাসের onCreate(..) কলব্যাকে Play Games SDK শুরু করুন৷ উদাহরণ স্বরূপ:

import com.google.android.gms.games.PlayGamesSdk;

...

@Override
public void onCreate(){
  super.onCreate();
  PlayGamesSdk.initialize(this);
}

সাইন-ইন এবং সাইন-আউট কলগুলি সরান৷

আপনি যদি কোনো অতিরিক্ত সুযোগ উল্লেখ না করেন, তাহলে আপনার ব্যবহারের ক্ষেত্রে স্থানান্তর করা সহজ হওয়া উচিত।

  1. GoogleSignIn API ব্যবহার করে সাইন-ইন কলগুলি সরান৷ সাইন-ইন সর্বদা গেম লঞ্চের সময় সঞ্চালিত হবে। পরিবর্তে, GamesSignInClient.isAuthenticated() ব্যবহার করে স্বয়ংক্রিয় সাইন-ইন প্রচেষ্টার ফলাফল শুনুন।

    GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());
    
    gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
      boolean isAuthenticated =
        (isAuthenticatedTask.isSuccessful() &&
         isAuthenticatedTask.getResult().isAuthenticated());
    
      if (isAuthenticated) {
        // Continue with Play Games Services
      } else {
        // Disable your integration with Play Games Services or show a
        // login button to ask  players to sign-in. Clicking it should
        // call GamesSignInClient.signIn().
      }
    });
    
  2. সাইন আউট করার জন্য সমস্ত কল সরান, কারণ অ্যাকাউন্ট পরিচালনা এখন OS এবং Play Games অ্যাপ সেটিংসের মধ্যে রয়েছে৷

  3. প্লেয়ার সফলভাবে সাইন ইন করলে, আপনার গেম থেকে Play Games সাইন-ইন বোতামটি সরিয়ে দিন। গেমটি চালু হওয়ার সময় ব্যবহারকারী যদি সাইন ইন না করা বেছে নেন, তাহলে আপনি ঐচ্ছিকভাবে Play Games আইকন সহ একটি বোতাম দেখানো চালিয়ে যেতে এবং GamesSignInClient.signIn() দিয়ে লগইন প্রক্রিয়াটি ট্রিগার করতে পারেন।

  4. ব্যবহারকারী সাইন ইন করেছেন তা যাচাই করার পরে, আপনি ব্যবহারকারীকে সনাক্ত করতে প্লেয়ার আইডি পুনরুদ্ধার করতে পারেন।

    PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
        // Get PlayerID with mTask.getResult().getPlayerId()
      }
    );
    
  5. GoogleSignIn API থেকে আপনার নির্ভরতা সরান, যদি আর ব্যবহার না হয়।

ক্লায়েন্ট শ্রেণীর নাম আপডেট করুন

ক্লায়েন্ট তৈরি করার সময় (যেমন LeaderboardsClient বা AchievementsClient ) Games.getFooClient() PlayGames.getFooClient() () ব্যবহার করুন।

সার্ভার সাইড অ্যাক্সেস অনুরোধ

সার্ভার সাইড অ্যাক্সেসের অনুরোধ করার সময় GoogleSignInAccount.getServerAuthCode() এর পরিবর্তে GamesSignInClient.requestServerSideAccess() ব্যবহার করুন।

GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(this);
gamesSignInClient
  .requestServerSideAccess(OAUTH_2_WEB_CLIENT_ID,
                           /*forceRefreshToken=*/ false)
  .addOnCompleteListener( task -> {
    if (task.isSuccessful()) {
      String serverAuthToken = task.getResult();
      // Send authentication code to the backend game server to be
      // exchanged for an access token and used to verify the
      // player via the Play Games Services REST APIs.
    } else {
      // Failed to retrieve authentication code.
    }
});

অতিরিক্ত সুযোগগুলি সরান

প্লে গেমস পরিষেবা v2 এর সাথে আপনি কোনও অতিরিক্ত সুযোগের অনুরোধ করতে পারবেন না। আপনি যদি এখনও অতিরিক্ত সুযোগের অনুরোধ করতে চান, তাহলে আমরা আপনাকে প্লে গেম পরিষেবাগুলির পাশাপাশি Google সাইন ইন SDK ব্যবহার করার পরামর্শ দিই।

GoogleApiClient থেকে মাইগ্রেশন

পুরানো বিদ্যমান ইন্টিগ্রেশনের জন্য আপনার গেম প্লে গেম পরিষেবা SDK-এর GoogleApiClient API পরিবর্তনের উপর নির্ভর করে। এটি 2017 সালের শেষের দিকে অবনমিত হয়েছিল এবং "সংযোগহীন" ক্লায়েন্টদের দ্বারা প্রতিস্থাপিত হয়েছিল। মাইগ্রেট করতে আপনি GoogleApiClient ক্লাসকে একটি "সংযোগহীন" সমতুল্য দিয়ে প্রতিস্থাপন করতে পারেন। তারপর v1 থেকে v2 তে আপনার গেম স্থানান্তর করতে আপনাকে উপরের নির্দেশিকা অনুসরণ করতে হবে। নীচে সাধারণ ক্লাসগুলির একটি ম্যাপিং রয়েছে:

com.google.android.gms.games.achievement.Achievements ->
    com.google.android.gms.games.AchievementsClient

com.google.android.gms.games.leaderboard.Leaderboard ->
    com.google.android.gms.games.LeaderboardsClient

com.google.android.gms.games.snapshot.Snapshots ->
    com.google.android.gms.games.SnapshotsClient

com.google.android.gms.games.stats.PlayerStats ->
    com.google.android.gms.games.PlayerStatsClient

com.google.android.gms.games.Players ->
    com.google.android.gms.games.PlayersClient

com.google.android.gms.games.GamesStatusCodes ->
    com.google.android.gms.games.GamesClientStatusCodes