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

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

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

প্লাগইনটি Google Play Plugins for Unity-এর অংশ। প্লাগইন আমদানি করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. ইউনিটি রিলিজের জন্য Google Play প্লাগইন থেকে সর্বশেষ রিলিজ ডাউনলোড করুন।
  2. ইউনিটি আইডিই মেনু বিকল্প সম্পদ > আমদানি প্যাকেজ > কাস্টম প্যাকেজ এবং সমস্ত আইটেম আমদানি করে .unitypackage ফাইলটি আমদানি করুন।

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

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

বিল্ড সেটিংস

একটি উইন্ডো খোলে যা ইনস্টল করা এবং তাত্ক্ষণিক বিকাশ মোডগুলির মধ্যে স্যুইচিং সক্ষম করে৷ ঝটপটে স্যুইচ করা নিম্নলিখিত পরিবর্তনগুলি সম্পাদন করে:

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

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

প্লেয়ার সেটিংস ডায়ালগ, চিত্র 1-এ দেখানো হয়েছে, আপনাকে Google Play Instant-এর জন্য সমর্থন অপ্টিমাইজ করতে, আরও সামঞ্জস্যপূর্ণ গ্রাফিক্স API-এর বিরুদ্ধে বিকাশ করতে এবং আপনার APK-এর আকার কমাতে সাহায্য করার পরামর্শগুলি প্রদর্শন করে৷

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

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

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

দ্রুত স্থাপন

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

সমর্থন ইনস্টলেশন কর্মপ্রবাহ

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

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

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

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

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

  • ব্যবহারকারী ইনস্টলেশন প্রক্রিয়া বাতিল করে কিনা তা নির্ধারণ করা। ইনস্ট্যান্ট অ্যাপের প্রধান কার্যকলাপে onActivityResult() ওভাররাইড করুন এবং নির্দিষ্ট requestCode RESULT_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 এ অন্তর্ভুক্ত অতিরিক্তগুলি ইনস্টল করা অ্যাপে নাও পৌঁছতে পারে যদি ব্যবহারকারী অ্যাপটি ইনস্টল করে কিন্তু পোস্ট-ইনস্টল লঞ্চ বাতিল করে। স্থির অবস্থা ধরে রাখার চেয়ে সক্রিয় অধিবেশন অবস্থা ধরে রাখার জন্য অভিপ্রায় অতিরিক্ত পাস করা আরও উপযুক্ত; পরেরটির জন্য কুকি 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.
}