Unity के साथ 'Google Play इंस्टैंट' का इस्तेमाल करें

चेतावनी: Google Play इंस्टैंट अब उपलब्ध नहीं होगा. दिसंबर 2025 से, इंस्टैंट ऐप्लिकेशन को Google Play से पब्लिश नहीं किया जा सकेगा और Google Play services के इंस्टैंट एपीआई काम नहीं करेंगे. उपयोगकर्ताओं को अब Play के ज़रिए, किसी भी तरीके से इंस्टैंट ऐप्लिकेशन नहीं दिखाए जाएंगे.

हम यह बदलाव, डेवलपर के सुझाव के आधार पर कर रहे हैं. साथ ही, Google Play इंस्टैंट की शुरुआत के बाद से, हम इसके इकोसिस्टम को बेहतर बनाने के लिए लगातार निवेश कर रहे हैं.

उपयोगकर्ताओं की संख्या बढ़ाने के लिए, हम डेवलपर को अपने रेगुलर ऐप्लिकेशन या गेम पर उपयोगकर्ताओं को भेजने का सुझाव देते हैं. इसके लिए, डीपलिंक का इस्तेमाल करके, उपयोगकर्ताओं को ज़रूरत के हिसाब से किसी खास प्रोसेस या सुविधा पर रीडायरेक्ट करें.

Unity के लिए Google Play इंस्टैंट प्लगिन, आपके Unity प्रोजेक्ट को कॉन्फ़िगर करता है, ताकि आपके गेम का इंस्टैंट ऐप्लिकेशन वर्शन बनाया जा सके. इस गाइड में, इस प्लगिन को इंस्टॉल करने और इस्तेमाल करने का तरीका बताया गया है.

प्लगिन डाउनलोड और इंपोर्ट करना

यह प्लगिन, Unity के लिए Google Play प्लगिन का हिस्सा है. प्लगिन इंपोर्ट करने के लिए, यह तरीका अपनाएं:

  1. Unity के लिए Google Play प्लगिन की रिलीज़ से, नया वर्शन डाउनलोड करें.
  2. .unitypackage फ़ाइल को इंपोर्ट करने के लिए, Unity IDE मेन्यू का विकल्प चुनें ऐसेट > पैकेज इंपोर्ट करें > कस्टम पैकेज और सभी आइटम इंपोर्ट करें.

Unity Editor की सुविधाएं

Unity में Google > Play इंस्टैंट सब-मेन्यू जोड़ने के लिए, प्लगिन इंपोर्ट करें. इस सब-मेन्यू में ये विकल्प मिलते हैं.

बिल्ड सेटिंग

इससे एक विंडो खुलती है. इसकी मदद से, इंस्टॉल किया गया और इंस्टैंट डेवलपमेंट मोड के बीच स्विच किया जा सकता है. इंस्टैंट पर स्विच करने से, ये बदलाव होते हैं:

  • PLAY_INSTANT नाम का स्क्रिप्टिंग डिफ़ाइन सिंबल बनता है. इसका इस्तेमाल, #if PLAY_INSTANT और #endif के साथ स्क्रिप्टिंग के लिए किया जा सकता है.
  • ज़रूरी बदलावों के लिए, AndroidManifest.xml में किए जाने वाले अपडेट मैनेज किए जाते हैं. जैसे कि android:targetSandboxVersion.

प्लेयर की सेटिंग

प्लेयर की सेटिंग डायलॉग, पहले डायग्राम में दिखाया गया है. इसमें आपको Google Play इंस्टैंट के लिए ऑप्टिमाइज़ करने, ज़्यादा संगत ग्राफ़िक्स एपीआई के साथ डेवलपमेंट करने, और अपने APK का साइज़ कम करने में मदद करने के लिए सुझाव दिखते हैं.

खास सुझावों में, सिर्फ़ OpenGL ES 2.0 का इस्तेमाल करना और मल्टीथ्रेड रेंडरिंग को बंद करना शामिल है.
पहला डायग्राम. प्लेयर की सेटिंग डायलॉग

प्लेयर की इन सेटिंग को ज़रूरी और सुझाई गई सेटिंग में बांटा गया है. अगर किसी सेटिंग के लिए अपडेट करें बटन मौजूद है, तो अपनी पसंद के हिसाब से वैल्यू बदलने के लिए उस पर क्लिक करें.

APK का साइज़ और कम करने के लिए, Unity Package Manager खोलें और इस्तेमाल न किए गए पैकेज हटाएं.

क्विक डिप्लॉय

क्विक डिप्लॉय की मदद से, Unity पर बने इंस्टैंट ऐप्लिकेशन का साइज़ कम किया जा सकता है. इसके लिए, कुछ ऐसेट को AssetBundle में पैकेज किया जाता है. क्विक डिप्लॉय का इस्तेमाल करने पर, Unity गेम इंजन और लोडिंग स्क्रीन को इंस्टैंट ऐप्लिकेशन APK में पैकेज किया जाता है. इसके बाद, इंस्टैंट ऐप्लिकेशन शुरू होने पर, वह किसी सर्वर से AssetBundle को वापस लाता है.

इंस्टॉल करने के वर्कफ़्लो के लिए सहायता

कई इंस्टैंट ऐप्लिकेशन का मकसद, उपयोगकर्ताओं को पूरा वर्शन इंस्टॉल करने से पहले, ऐप्लिकेशन का अनुभव लेने का मौका देना होता है. Unity के लिए Google Play इंस्टैंट प्लगिन, Play Store पर इंस्टॉल करने का डायलॉग दिखाने और इंस्टैंट ऐप्लिकेशन से इंस्टॉल किए गए ऐप्लिकेशन में स्टेटस ट्रांसफ़र करने के लिए एपीआई उपलब्ध कराता है.

इंस्टॉल करने का प्रॉम्प्ट दिखाना

इंस्टॉल करें बटन वाला कोई इंस्टैंट ऐप्लिकेशन, Play Store पर इंस्टॉल करने का डायलॉग दिखा सकता है. इसके लिए, इंस्टॉल करें बटन के क्लिक हैंडलर से यह कोड कॉल करें:

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");
}

अगर उपयोगकर्ता ऐप्लिकेशन इंस्टॉल कर लेता है, तो Play Store, दिए गए postInstallIntent का इस्तेमाल करके ऐप्लिकेशन को फिर से लॉन्च करेगा. इंस्टॉल किया गया ऐप्लिकेशन, postInstallIntent में सेट की गई वैल्यू को इस कोड का इस्तेमाल करके वापस ला सकता है:

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

ध्यान दें:

  • postInstallIntent में शामिल एक्स्ट्रा, इंस्टॉल किए गए ऐप्लिकेशन तक नहीं पहुंच सकते. ऐसा तब होता है, जब उपयोगकर्ता ऐप्लिकेशन इंस्टॉल कर लेता है, लेकिन इंस्टॉल होने के बाद उसे लॉन्च नहीं करता. इंटेंट एक्स्ट्रा पास करना, परसिस्टेंट स्टेटस को बनाए रखने के मुकाबले, चालू सेशन के स्टेटस को बनाए रखने के लिए ज़्यादा सही है. परसिस्टेंट स्टेटस को बनाए रखने के लिए, कुकी एपीआई देखें.
  • कोई भी व्यक्ति, इंस्टॉल किए गए ऐप्लिकेशन को लॉन्च करने के लिए, एक्स्ट्रा फ़ील्ड के साथ इंटेंट बना सकता है. इसलिए, अगर पेलोड से कोई वैल्यू मिलती है, तो पेलोड को इस तरह डिज़ाइन करें कि उसका इस्तेमाल सिर्फ़ एक बार किया जा सके. साथ ही, उसे क्रिप्टोग्राफ़िक तरीके से साइन करें और किसी सर्वर पर सिग्नेचर की पुष्टि करें.

कुकी एपीआई, किसी कुकी (जैसे, प्लेयर आईडी या लेवल पूरा होने का डेटा) को इंस्टैंट ऐप्लिकेशन से उसके इंस्टॉल किए गए ऐप्लिकेशन में पास करने के तरीके उपलब्ध कराता है. 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.
}