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

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

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

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

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

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

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

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

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

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

बिल्ड सेटिंग

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

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

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

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

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

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

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

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

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

इंस्टॉल करने के वर्कफ़्लो के साथ काम करता है

कई इंस्टेंट ऐप्लिकेशन का मकसद, उपयोगकर्ताओं को ऐप्लिकेशन का पूरा वर्शन इंस्टॉल करने से पहले, उसे आज़माने का मौका देना होता है. Unity के लिए Google Play Instant प्लगिन, 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 में शामिल अतिरिक्त सुविधाएं, इंस्टॉल किए गए ऐप्लिकेशन तक न पहुंचें. इंटेंट एक्स्ट्रा पास करना, ऐक्टिव सेशन की स्थिति को बनाए रखने के लिए बेहतर है. हालांकि, यह लगातार बनी रहने वाली स्थिति को बनाए रखने के लिए बेहतर नहीं है. लगातार बनी रहने वाली स्थिति के लिए, Cookie API देखें.
  • कोई भी व्यक्ति, इंस्टॉल किए गए ऐप्लिकेशन को लॉन्च करने के लिए, अतिरिक्त फ़ील्ड के साथ इंटेंट बना सकता है. इसलिए, अगर पेलोड से कोई फ़ायदा मिलता है, तो पेलोड को इस तरह से डिज़ाइन करें कि उसका इस्तेमाल सिर्फ़ एक बार किया जा सके. साथ ही, उसे क्रिप्टोग्राफ़िक तरीके से साइन करें और सर्वर पर हस्ताक्षर की पुष्टि करें.

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