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

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

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

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

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

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

Google > Unity में मौजूद इंस्टैंट सबमेन्यू की सुविधा उपलब्ध है. यह सबमेन्यू ये विकल्प देता है.

बिल्ड सेटिंग

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

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

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

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

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

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

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

तुरंत डिप्लॉय करें

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