একতার সাথে গুগল প্লে ইনস্ট্যান্ট ব্যবহার করুন

সতর্কীকরণ: গুগল প্লে ইনস্ট্যান্ট আর উপলব্ধ থাকবে না। ডিসেম্বর ২০২৫ থেকে, গুগল প্লে-এর মাধ্যমে ইনস্ট্যান্ট অ্যাপ প্রকাশ করা যাবে না এবং গুগল প্লে পরিষেবার সমস্ত ইনস্ট্যান্ট এপিআই আর কাজ করবে না। প্লে আর কোনো পদ্ধতির মাধ্যমে ব্যবহারকারীদের ইনস্ট্যান্ট অ্যাপ সরবরাহ করবে না।

ডেভেলপারদের মতামত এবং গুগল প্লে ইনস্ট্যান্ট চালু হওয়ার পর থেকে ইকোসিস্টেম উন্নত করার জন্য আমাদের ধারাবাহিক বিনিয়োগের ভিত্তিতে আমরা এই পরিবর্তনটি আনছি।

ব্যবহারকারীর সংখ্যা বৃদ্ধির প্রক্রিয়াকে আরও উন্নত করতে, আমরা ডেভেলপারদের উৎসাহিত করি যেন তারা ব্যবহারকারীদের তাদের নিয়মিত অ্যাপ বা গেমে রেফার করেন এবং প্রাসঙ্গিক ক্ষেত্রে ডীপলিঙ্ক ব্যবহার করে তাদেরকে নির্দিষ্ট জার্নি বা ফিচারে পুনঃনির্দেশিত করেন।

ইউনিটির জন্য গুগল প্লে ইনস্ট্যান্ট প্লাগইনটি আপনার গেমের একটি তাৎক্ষণিক অ্যাপ সংস্করণ তৈরি করার জন্য আপনার ইউনিটি প্রজেক্টকে কনফিগার করে। এই নির্দেশিকায় এই প্লাগইনটি কীভাবে ইনস্টল এবং ব্যবহার করতে হয় তা বর্ণনা করা হয়েছে।

প্লাগইনটি ডাউনলোড এবং ইম্পোর্ট করুন

এই প্লাগইনটি ইউনিটির জন্য গুগল প্লে প্লাগইন-এর একটি অংশ। প্লাগইনটি ইম্পোর্ট করতে, এই ধাপগুলো অনুসরণ করুন:

  1. গুগল প্লে থেকে ইউনিটি প্লাগইনগুলির সর্বশেষ রিলিজটি ডাউনলোড করুন।
  2. Unity IDE-র মেনু অপশন Assets > Import package > Custom Package নির্বাচন করে সমস্ত আইটেম ইম্পোর্ট করার মাধ্যমে .unitypackage ফাইলটি ইম্পোর্ট করুন।

ইউনিটি এডিটর বৈশিষ্ট্য

ইউনিটিতে একটি Google > Play Instant সাবমেনু যোগ করতে প্লাগইনটি ইম্পোর্ট করুন। এই সাবমেনুটি নিম্নলিখিত অপশনগুলো প্রদান করে।

বিল্ড সেটিংস

একটি উইন্ডো খোলে যা ইনস্টলড এবং ইনস্ট্যান্ট ডেভেলপমেন্ট মোডের মধ্যে পরিবর্তন করতে সক্ষম করে। ইনস্ট্যান্ট মোডে পরিবর্তন করলে নিম্নলিখিত পরিবর্তনগুলি ঘটে:

  • PLAY_INSTANT নামে একটি স্ক্রিপ্টিং ডিফাইন সিম্বল তৈরি করে যা #if PLAY_INSTANT এবং #endif ব্যবহার করে স্ক্রিপ্টিংয়ের জন্য ব্যবহার করা যেতে পারে।
  • android:targetSandboxVersion- এর মতো কিছু প্রয়োজনীয় পরিবর্তনের জন্য AndroidManifest.xml-এর আপডেটগুলি পরিচালনা করে।

প্লেয়ার সেটিংস

চিত্র ১-এ দেখানো প্লেয়ার সেটিংস ডায়ালগটি আপনাকে গুগল প্লে ইনস্ট্যান্ট-এর জন্য সাপোর্ট অপ্টিমাইজ করতে, আরও সামঞ্জস্যপূর্ণ গ্রাফিক্স এপিআই ব্যবহার করে ডেভেলপ করতে এবং আপনার APK-এর সাইজ কমাতে সাহায্য করার জন্য পরামর্শ প্রদর্শন করে।

সুনির্দিষ্ট পরামর্শগুলোর মধ্যে রয়েছে শুধুমাত্র OpenGL ES 2.0 ব্যবহার করা এবং মাল্টিথ্রেডেড রেন্ডারিং নিষ্ক্রিয় করা।
চিত্র ১. প্লেয়ার সেটিংস ডায়ালগ

এই প্লেয়ার সেটিংসগুলো প্রয়োজনীয় এবং প্রস্তাবিত সেটিংসে বিভক্ত। যদি কোনো সেটিংসে একটি সংশ্লিষ্ট আপডেট বাটন থাকে, তবে সেটিংটি পছন্দের মানে পরিবর্তন করতে সেটিতে ক্লিক করুন।

APK-এর আকার আরও কমাতে, ইউনিটি প্যাকেজ ম্যানেজার খুলুন এবং অব্যবহৃত প্যাকেজগুলি সরিয়ে দিন।

দ্রুত মোতায়েন

কুইক ডিপ্লয় কিছু অ্যাসেটকে একটি অ্যাসেটবান্ডেল -এ প্যাকেজ করার মাধ্যমে একটি ইউনিটি-ভিত্তিক ইনস্ট্যান্ট অ্যাপের আকার কমাতে পারে। কুইক ডিপ্লয় ব্যবহার করার সময়, ইউনিটি গেম ইঞ্জিন এবং একটি লোডিং স্ক্রিনকে একটি ইনস্ট্যান্ট অ্যাপ APK-তে প্যাকেজ করা হয়, এবং ইনস্ট্যান্ট অ্যাপটি চালু হওয়ার পর এটি একটি সার্ভার থেকে অ্যাসেটবান্ডেলটি সংগ্রহ করে।

ইনস্টলেশন ওয়ার্কফ্লো সমর্থন করুন

অনেক ইনস্ট্যান্ট অ্যাপের লক্ষ্য হলো ব্যবহারকারীদের সম্পূর্ণ সংস্করণ ইনস্টল করার আগে অ্যাপটি ব্যবহার করে দেখার সুযোগ দেওয়া। ইউনিটির জন্য গুগল প্লে ইনস্ট্যান্ট প্লাগইনটি প্লে স্টোর ইনস্টল ডায়ালগ দেখানোর জন্য এবং ইনস্ট্যান্ট অ্যাপ থেকে ইনস্টল করা অ্যাপে স্টেট স্থানান্তরের জন্য এপিআই (API) প্রদান করে।

ইনস্টল করার জন্য একটি প্রম্পট দেখান

ইনস্টল বাটনযুক্ত কোনো ইনস্ট্যান্ট অ্যাপ, ইনস্টল বাটন ক্লিক হ্যান্ডলার থেকে নিম্নলিখিতটি কল করার মাধ্যমে প্লে স্টোর ইনস্টল ডায়ালগ প্রদর্শন করতে পারে:

Google.Play.Instant.InstallLauncher.ShowInstallPrompt();

ShowInstallPrompt() মেথডটির একটি ওভারলোড আছে যা নিম্নলিখিত এক বা একাধিক কাজের সুযোগ দেয়:

  • ব্যবহারকারী ইনস্টলেশন প্রক্রিয়াটি বাতিল করছেন কিনা তা নির্ধারণ করতে, ইনস্ট্যান্ট অ্যাপের প্রধান অ্যাক্টিভিটিতে onActivityResult() ওভাররাইড করুন এবং নির্দিষ্ট requestCodeRESULT_CANCELED আছে কিনা তা পরীক্ষা করুন।
  • referrer প্যারামিটারের মাধ্যমে একটি ইনস্টল রেফারার স্ট্রিং পাস করা।
  • PutPostInstallIntentStringExtra() এর মাধ্যমে বর্তমান গেম সেশনের অবস্থা প্রেরণ করা হচ্ছে।

নিম্নলিখিত উদাহরণে এগুলো দেখানো হয়েছে:

using Google.Play.Instant;
...
const int requestCode = 123;
var sessionInfo = /* Object serialized as a string representing player's current location, etc. */;
using (var activity = UnityPlayerHelper.GetCurrentActivity())
using (var postInstallIntent = InstallLauncher.CreatePostInstallIntent(activity))
{
    InstallLauncher.PutPostInstallIntentStringExtra(postInstallIntent, "sessionInfo", sessionInfo);
    InstallLauncher.ShowInstallPrompt(activity, requestCode, postInstallIntent, "test-referrer");
}

যদি ব্যবহারকারী অ্যাপ ইনস্টলেশন সম্পন্ন করেন, তাহলে প্লে স্টোর প্রদত্ত postInstallIntent ব্যবহার করে অ্যাপটি পুনরায় চালু করবে। ইনস্টল করা অ্যাপটি নিম্নলিখিত উপায়ে postInstallIntent এ সেট করা মান পুনরুদ্ধার করতে পারে:

var sessionInfo = InstallLauncher.GetPostInstallIntentStringExtra("sessionInfo");

নোট:

  • যদি ব্যবহারকারী অ্যাপটি ইনস্টল করার পর পোস্ট-ইনস্টল লঞ্চটি বাতিল করে দেন, তাহলে postInstallIntent এ অন্তর্ভুক্ত এক্সট্রাগুলো ইনস্টল করা অ্যাপে নাও পৌঁছাতে পারে। পারসিস্টেন্ট স্টেট ধরে রাখার চেয়ে অ্যাক্টিভ সেশন স্টেট ধরে রাখার জন্য ইন্টেন্ট এক্সট্রা পাস করা বেশি উপযোগী; পরেরটির জন্য কুকি এপিআই (Cookie API) দেখুন।
  • যে কেউ ইনস্টল করা অ্যাপটি চালু করার জন্য অতিরিক্ত ফিল্ডসহ একটি ইন্টেন্ট তৈরি করতে পারে, তাই যদি পেলোডটি মূল্যবান কিছু প্রদান করে, তবে পেলোডটি এমনভাবে ডিজাইন করুন যাতে এটি কেবল একবারই ব্যবহার করা যায়, এটিকে ক্রিপ্টোগ্রাফিকভাবে স্বাক্ষর করুন এবং সার্ভারে স্বাক্ষরটি যাচাই করুন।

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

using Google.Play.Instant;
...
var playerInfo = /* Object serialized as a string representing game levels completed, etc. */;
var cookieBytes = System.Text.Encoding.UTF8.GetBytes(playerInfo);
try
{
    var maxCookieSize = CookieApi.GetInstantAppCookieMaxSize();
    if (cookieBytes.Length > maxCookieSize)
    {
        UnityEngine.Debug.LogErrorFormat("Cookie length {0} exceeds limit {1}.", cookieBytes.Length, maxCookieSize);
    }
    else if (CookieApi.SetInstantAppCookie(cookieBytes))
    {
        UnityEngine.Debug.Log("Successfully set cookie. Now display the app install dialog...");
        InstallLauncher.ShowInstallPrompt();
    }
    else
    {
        UnityEngine.Debug.LogError("Failed to set cookie.");
    }
}
catch (CookieApi.InstantAppCookieException ex)
{
    UnityEngine.Debug.LogErrorFormat("Failed to set cookie: {0}", ex);
}

যদি ব্যবহারকারী অ্যাপ ইনস্টলেশন সম্পন্ন করেন, তবে ইনস্টল করা অ্যাপটি নিম্নলিখিত কোড ব্যবহার করে কুকি ডেটা পুনরুদ্ধার করতে পারে:

var cookieBytes = CookieApi.GetInstantAppCookie();
var playerInfoString = System.Text.Encoding.UTF8.GetString(cookieBytes);
if (!string.IsNullOrEmpty(playerInfoString))
{
    // Initialize game state based on the cookie, e.g. skip tutorial level completed in instant app.
}