इन-ऐप्लिकेशन अपडेट के साथ काम करने की सुविधा (Unity)

इस गाइड में ऐप्लिकेशन के अंदर की सुविधा को इस्तेमाल करने का तरीका बताया गया है Unity का इस्तेमाल करके अपने ऐप्लिकेशन में अपडेट पाएं. यहां हैं उन मामलों के लिए अलग गाइड जहां लागू करने के लिए, Kotlin प्रोग्रामिंग का इस्तेमाल किया जाता है भाषा या Java प्रोग्रामिंग भाषा और ऐसे मामलों में जहां लागू करने की प्रक्रिया में नेटिव कोड का इस्तेमाल होता है (C/C++).

अपना डेवलपमेंट एनवायरमेंट सेट अप करें

Play In-App अपडेट Unity प्लगिन की सबसे नई रिलीज़, इसके लिए Google के पैकेज से डाउनलोड करें Unity.

Unity SDK टूल के बारे में खास जानकारी

Play इन-ऐप्लिकेशन अपडेट एपीआई, Play Core का हिस्सा है SDK टूल फ़ैमिली. एकता प्लग इन यह देता है: AppUpdateManager क्लास का इस्तेमाल करें. आपको ऐसा ज़रूर करना चाहिए इस क्लास को इन-ऐप्लिकेशन अपडेट मैनेज करने के लिए इस्तेमाल करने से पहले, इस क्लास को इंस्टैंशिएट करें:

AppUpdateManager appUpdateManager = new AppUpdateManager();

देखें कि अपडेट उपलब्ध है या नहीं

अपडेट का अनुरोध करने से पहले, देख लें कि आपके ऐप्लिकेशन के लिए कोई अपडेट उपलब्ध है या नहीं है. इसमें अपडेट की जांच करने के लिए AppUpdateManager का इस्तेमाल करें कोरूटीन:

IEnumerator CheckForUpdate()
{
  PlayAsyncOperation<AppUpdateInfo, AppUpdateErrorCode> appUpdateInfoOperation =
    appUpdateManager.GetAppUpdateInfo();

  // Wait until the asynchronous operation completes.
  yield return appUpdateInfoOperation;

  if (appUpdateInfoOperation.IsSuccessful)
  {
    var appUpdateInfoResult = appUpdateInfoOperation.GetResult();
    // Check AppUpdateInfo's UpdateAvailability, UpdatePriority,
    // IsUpdateTypeAllowed(), etc. and decide whether to ask the user
    // to start an in-app update.
  }
  else
  {
    // Log appUpdateInfoOperation.Error.
  }
}

रिटर्न AppUpdateInfo इंस्टेंस में, अपडेट के उपलब्ध होने की स्थिति मौजूद हो. अगर इन-ऐप्लिकेशन अपडेट पहले से मौजूद है, तो प्रोग्रेस में है, तो इंस्टेंस से, अपडेट की प्रोसेस जारी है उसके स्टेटस की भी रिपोर्ट मिलती है.

अपडेट की पुरानी जानकारी देखें

यह देखने के अलावा कि कोई अपडेट उपलब्ध है या नहीं, शायद आपको देखें कि उपयोगकर्ता को आखिरी बार अपडेट की सूचना मिलने के बाद कितना समय हुआ है Play Store से. इससे आपको यह फ़ैसला लेने में मदद मिलेगी कि आपको फ़्लेक्सिबल अपडेट या तुरंत एक अपडेट. उदाहरण के लिए, आपको कुछ दिन इंतज़ार करना पड़ सकता है को अपडेट करने के बारे में सूचना दी थी. तुरंत अपडेट करने की ज़रूरत नहीं होती.

इस्तेमाल की जाने वाली चीज़ें ClientVersionStalenessDays Play पर अपडेट उपलब्ध होने के बाद से दिनों की संख्या देखने के लिए स्टोर:

var stalenessDays = appUpdateInfoOperation.ClientVersionStalenessDays;

अपडेट की प्राथमिकता देखें

Google Play Developer API की मदद से, हर अपडेट की प्राथमिकता सेट की जा सकती है. इससे आपके ऐप्लिकेशन को यह तय करने में मदद मिलती है कि उपयोगकर्ता को अपडेट का सुझाव किस तरह देना है. उदाहरण के लिए, अपडेट की प्राथमिकता सेट करने के लिए, यह रणनीति देखें:

  • यूज़र इंटरफ़ेस (यूआई) में छोटे-मोटे सुधार: कम प्राथमिकता वाला अपडेट; अनुरोध के मुताबिक, महीने के हिसाब से और न ही तुरंत अपडेट होता है.
  • परफ़ॉर्मेंस में सुधार: सामान्य प्राथमिकता वाला अपडेट; महीने के हिसाब से पेमेंट के विकल्प का अनुरोध करें अपडेट.
  • सुरक्षा से जुड़ा गंभीर अपडेट: ज़्यादा प्राथमिकता वाला अपडेट; तुरंत अनुरोध करें अपडेट.

प्राथमिकता तय करने के लिए Google Play, 0 से 5 के बीच की कोई वैल्यू इस्तेमाल करता है. वैल्यू के तौर पर 0 की वैल्यू दी जाती है 'डिफ़ॉल्ट' और 5 का मतलब सबसे ज़्यादा प्राथमिकता है. किसी अपडेट करने के लिए, Edits.tracks.releases के अंतर्गत inAppUpdatePriority फ़ील्ड का उपयोग करें Google Play डेवलपर एपीआई. रिलीज़ में जोड़े गए सभी नए वर्शन को रिलीज़ की समान प्राथमिकता माना जाता है. प्राथमिकता सिर्फ़ तब सेट की जा सकती है, जब नई रिलीज़ को रोल आउट करना है और बाद में इसे बदला नहीं जा सकता.

Play में बताए गए तरीके से, Google Play Developer API का इस्तेमाल करके प्राथमिकता सेट करें डेवलपर एपीआई दस्तावेज़ में दिया गया है. इन-ऐप्लिकेशन अपडेट की प्राथमिकता इसमें दी जानी चाहिए: Edit.tracks संसाधन को इसमें पास किया गया Edit.tracks: update तरीका. इस उदाहरण में, वर्शन कोड 88 के साथ ऐप्लिकेशन रिलीज़ करने के बारे में बताया गया है और inAppUpdatePriority 5:

{
  "releases": [{
      "versionCodes": ["88"],
      "inAppUpdatePriority": 5,
      "status": "completed"
  }]
}

अपने ऐप्लिकेशन के कोड में, दिए गए अपडेट का प्राथमिकता लेवल देखा जा सकता है. इसके लिए, UpdatePriority:

var priority = appUpdateInfoOperation.UpdatePriority;

अपडेट शुरू करें

यह पक्का करने के बाद कि अपडेट उपलब्ध है, अपडेट का अनुरोध करने के लिए इसका इस्तेमाल करें: AppUpdateManager.StartUpdate(). अपडेट का अनुरोध करने से पहले, पक्का करें कि आपके पास अप-टू-डेट जानकारी हो AppUpdateInfo ऑब्जेक्ट. आपको एक विज्ञापन कोड भी बनाना होगा AppUpdateOptions ऑब्जेक्ट का इस्तेमाल करके, अपडेट फ़्लो को कॉन्फ़िगर करें.

नीचे दिए गए उदाहरण में, तुरंत नतीजे पाने के लिए AppUpdateOptions ऑब्जेक्ट बनाया गया है अपडेट का फ़्लो:

// Creates an AppUpdateOptions defining an immediate in-app
// update flow and its parameters.
var appUpdateOptions = AppUpdateOptions.ImmediateAppUpdateOptions();

इस उदाहरण में, फ़्लेक्सिबल प्रॉपर्टी के लिए एक AppUpdateOptions ऑब्जेक्ट बनाया गया है अपडेट का फ़्लो:

// Creates an AppUpdateOptions defining a flexible in-app
// update flow and its parameters.
var appUpdateOptions = AppUpdateOptions.FlexibleAppUpdateOptions();

AppUpdateOptions ऑब्जेक्ट में एक AllowAssetPackDeletion फ़ील्ड भी है जो तय करता है कि अपडेट की मदद से ऐसेट को पैक मिलेंगे. यह फ़ील्ड डिफ़ॉल्ट रूप से false पर सेट होता है, लेकिन आप ImmediateAppUpdateOptions() या allowAssetPackDeletion के लिए वैकल्पिक आर्ग्युमेंट इसके बजाय इसे true पर सेट करने के लिए FlexibleAppUpdateOptions():

// Creates an AppUpdateOptions for an immediate flow that allows
// asset pack deletion.
var appUpdateOptions =
  AppUpdateOptions.ImmediateAppUpdateOptions(allowAssetPackDeletion: true);

// Creates an AppUpdateOptions for a flexible flow that allows asset
// pack deletion.
var appUpdateOptions =
  AppUpdateOptions.FlexibleAppUpdateOptions(allowAssetPackDeletion: true);

अगले चरण इस बात पर निर्भर करते हैं कि क्या आपने सुविधाजनक अपडेट या तुरंत अपडेट करें.

ज़रूरत के हिसाब से अपडेट मैनेज करना

जब आपके पास अप-टू-डेट AppUpdateInfo ऑब्जेक्ट और सही तरीके से कॉन्फ़िगर किया गया हो AppUpdateOptions ऑब्जेक्ट, आप AppUpdateManager.StartUpdate() को इस पर कॉल कर सकते हैं: अपडेट फ़्लो का एसिंक्रोनस रूप से अनुरोध करें.

IEnumerator StartFlexibleUpdate()
{
  // Creates an AppUpdateRequest that can be used to monitor the
  // requested in-app update flow.
  var startUpdateRequest = appUpdateManager.StartUpdate(
    // The result returned by PlayAsyncOperation.GetResult().
    appUpdateInfoResult,
    // The AppUpdateOptions created defining the requested in-app update
    // and its parameters.
    appUpdateOptions);

  while (!startUpdateRequest.IsDone)
  {
  // For flexible flow,the user can continue to use the app while
  // the update downloads in the background. You can implement a
  // progress bar showing the download status during this time.
  yield return null;
  }

}

ज़रूरत के हिसाब से अपडेट करने के लिए, आपको ऐप्लिकेशन के अपडेट को इंस्टॉल करने की प्रोसेस को ट्रिगर करना होगा डाउनलोड पूरा हो जाने के बाद. ऐसा करने के लिए, कॉल करें AppUpdateManager.CompleteUpdate() जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:

IEnumerator CompleteFlexibleUpdate()
{
  var result = appUpdateManager.CompleteUpdate();
  yield return result;

  // If the update completes successfully, then the app restarts and this line
  // is never reached. If this line is reached, then handle the failure (e.g. by
  // logging result.Error or by displaying a message to the user).
}

तुरंत अपडेट मैनेज करना

जब आपके पास अप-टू-डेट AppUpdateInfo ऑब्जेक्ट और सही तरीके से कॉन्फ़िगर किया गया हो AppUpdateOptions ऑब्जेक्ट, आप AppUpdateManager.StartUpdate() को इस पर कॉल कर सकते हैं: अपडेट फ़्लो का एसिंक्रोनस रूप से अनुरोध करें.

IEnumerator StartImmediateUpdate()
{
  // Creates an AppUpdateRequest that can be used to monitor the
  // requested in-app update flow.
  var startUpdateRequest = appUpdateManager.StartUpdate(
    // The result returned by PlayAsyncOperation.GetResult().
    appUpdateInfoResult,
    // The AppUpdateOptions created defining the requested in-app update
    // and its parameters.
    appUpdateOptions);
  yield return startUpdateRequest;

  // If the update completes successfully, then the app restarts and this line
  // is never reached. If this line is reached, then handle the failure (for
  // example, by logging result.Error or by displaying a message to the user).
}

तुरंत अपडेट करने के लिए, Google Play उपयोगकर्ता की पुष्टि करने वाला डायलॉग दिखाता है. जब उपयोगकर्ता अनुरोध स्वीकार कर लेता है, तब Google Play अपने-आप अपडेट को इंस्टॉल करने के बाद, अपडेट किए हुए वर्शन पर ऐप्लिकेशन को रीस्टार्ट करता है, अगर: इंस्टॉलेशन सफल रहा.

गड़बड़ी ठीक करना

इस सेक्शन में सामान्य गड़बड़ियों के समाधान के बारे में बताया गया है.

  • अगर StartUpdate(), ArgumentNullException फेंकता है, तो इसका मतलब है AppUpdateInfo खाली है. पक्का करें कि AppUpdateInfo ऑब्जेक्ट, इनसे मिला हो अपडेट फ़्लो शुरू करने से पहले, GetAppUpdateInfo() शून्य नहीं होता है.
  • अगर PlayAsyncOperation गड़बड़ी का ErrorUpdateUnavailable कोड दिखाता है, तो पक्का करें कि ऐप्लिकेशन का ऐसा अपडेट किया हुआ वर्शन उपलब्ध हो जिसमें वही ऐप्लिकेशन मौजूद हो आईडी और साइनिंग पासकोड.
  • अगर PlayAsyncOperation, गड़बड़ी का ErrorUpdateNotAllowed कोड दिखाता है, तो इसका मतलब है कि AppUpdateOptions ऑब्जेक्ट एक ऐसे अपडेट टाइप को दिखाता है जो को उपलब्ध अपडेट के लिए अनुमति दी गई है. यह पता करें कि AppUpdateInfo ऑब्जेक्ट इससे पता चलता है कि अपडेट शुरू करने से पहले, चुने गए अपडेट टाइप को इस्तेमाल करने की अनुमति है फ़्लो.

अगले चरण

पुष्टि करने के लिए, अपने ऐप्लिकेशन के इन-ऐप्लिकेशन अपडेट की जांच करना आपका इंटिग्रेशन ठीक से काम कर रहा है.