Web In Play में नया क्या है

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

नई बबलरैप और विश्वसनीय वेब गतिविधि सुविधाएं

Bubblewrap की मदद से, ऐसे ऐप्लिकेशन बनाए जा सकते हैं जो भरोसेमंद वेब गतिविधि के बिना आपके PWA को लॉन्च करते हैं प्लैटफ़ॉर्म के हिसाब से टूल की जानकारी की ज़रूरत होती है.

आसान सेटअप फ़्लो

पहले, बबल रैप का इस्तेमाल करने के लिए, Java डेवलपमेंट किट और Android को मैन्युअल तरीके से सेट अप करना पड़ता था SDK टूल. इन दोनों में गड़बड़ी होने की संभावना होती है. यह टूल अब डिपेंडेंसी जब पहली बार चालू की जाती है.

हालांकि, डिपेंडेंसी के मौजूदा इंस्टॉलेशन का इस्तेमाल किया जा सकता है. अगर आपको इसकी ज़रूरत है, तो साथ ही, doctor का नया निर्देश, समस्याओं को ढूंढने में मदद करता है और कॉन्फ़िगरेशन में सुधार करने के सुझाव देता है. इससे अब updateConfig कमांड का इस्तेमाल करके कमांड लाइन से अपडेट किया जाएगा.

बेहतर विज़र्ड

init के साथ कोई प्रोजेक्ट बनाते समय, Android ऐप्लिकेशन बनाने के लिए Bubblewrap को जानकारी की ज़रूरत होती है. कॉन्टेंट बनाने यह टूल, वेब ऐप्लिकेशन मेनिफ़ेस्ट से वैल्यू एक्सट्रैक्ट करता है और जहां संभव होता है वहां डिफ़ॉल्ट सेटिंग उपलब्ध कराता है.

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

डिसप्ले: फ़ुलस्क्रीन और ओरिएंटेशन की सुविधा

कुछ मामलों में, हो सकता है कि आप ऐप्लिकेशन को स्क्रीन का जितना हो सके उतना इस्तेमाल करना चाहें और जब पीडब्ल्यूए बनाते हैं, तो इसे लागू करने के लिए, वेब ऐप्लिकेशन मेनिफ़ेस्ट से display फ़ील्ड को इस पर सेट किया जाता है fullscreen.

जब Bubblewrap, वेब ऐप्लिकेशन मेनिफ़ेस्ट में फ़ुलस्क्रीन विकल्प का पता लगाता है, तो यह Android को कॉन्फ़िगर करता है ऐप्लिकेशन को Android के लिए खास शर्तों में फ़ुल स्क्रीन या इमर्सिव मोड में भी लॉन्च किया जा सकता है.

वेब ऐप्लिकेशन मेनिफ़ेस्ट का orientation फ़ील्ड बताता है कि ऐप्लिकेशन को शुरू किया जाना चाहिए या नहीं डिवाइस में अभी इस्तेमाल किया जा रहा है. पोर्ट्रेट मोड, लैंडस्केप मोड या स्क्रीन की दिशा (ओरिएंटेशन) में. अभी बबल रैप करें वेब ऐप्लिकेशन मेनिफ़ेस्ट फ़ील्ड को पढ़ता है. साथ ही, Android ऐप्लिकेशन बनाते समय इसका इस्तेमाल डिफ़ॉल्ट के तौर पर करता है.

bubblewrap init फ़्लो के तहत, दोनों कॉन्फ़िगरेशन को अपनी पसंद के मुताबिक बनाया जा सकता है.

AppBundles आउटपुट

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

Bubblewrap अब ऐप्लिकेशन को ऐप्लिकेशन बंडल के तौर पर पैकेज करता है. यह पैकेज, app-release-bundle.aab. Play Store में ऐप्लिकेशन पब्लिश करते समय, आपको इस फ़ॉर्मैट का इस्तेमाल करना चाहिए क्योंकि साल 2021 की दूसरी छमाही से स्टोर के लिए इसकी ज़रूरत होगी.

जियोलोकेशन का ऐक्सेस देना

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

इस सुविधा को Bubblewrap की मदद से जोड़ा जा सकता है. ऐसा इसलिए, क्योंकि यह Android डिवाइस पर ज़्यादा डिपेंडेंसी जोड़ देता है प्रोजेक्ट शामिल है, तो आपको इसे सिर्फ़ तब चालू करना चाहिए, जब वेब ऐप्लिकेशन जियोलोकेशन की अनुमति का इस्तेमाल कर रहा हो.

ऑप्टिमाइज़ की गई बाइनरी

दुनिया के कुछ इलाकों में सीमित स्टोरेज वाले डिवाइस होना आम बात है. साथ ही, उन डिवाइसों के मालिक भी आम तौर पर ऐसा करते हैं अक्सर छोटे ऐप्लिकेशन इस्तेमाल करते हैं. भरोसेमंद वेब गतिविधि का इस्तेमाल करने वाले ऐप्लिकेशन, छोटे साइज़ की बाइनरी, जिससे लोगों की चिंता दूर हो जाती है.

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

किसी मौजूदा ऐप्लिकेशन को अपडेट करने का तरीका

Bubblewrap से जनरेट किया गया ऐप्लिकेशन, वेब ऐप्लिकेशन और लाइटवेट Android से मिलकर बना है रैपर, जो PWA को खोलता है. भरोसेमंद वेब गतिविधि के अंदर खोला गया PWA, इन चीज़ों का पालन करता है: और वेब ऐप्लिकेशन की तरह ही अपडेट साइकल भी होते हैं, तो नेटिव रैपर को अपडेट किया जा सकता है और किया भी जाना चाहिए.

आपको अपने ऐप्लिकेशन को अपडेट करना चाहिए, ताकि यह पक्का किया जा सके कि वह रैपर के सबसे नए वर्शन और सबसे नए वर्शन का इस्तेमाल कर रहा है गड़बड़ियां ठीक की गईं और सुविधाएं जोड़ी गईं. बबल रैप का सबसे नया वर्शन इंस्टॉल करने पर, update निर्देश किसी मौजूदा प्रोजेक्ट में रैपर का सबसे नया वर्शन लागू करें:

npm update -g @bubblewrap/cli
bubblewrap update
bubblewrap build

उन ऐप्लिकेशन को अपडेट करने का एक अन्य वजह यह पक्का करना है कि वेब मेनिफ़ेस्ट में किए गए बदलाव जो ऐप्लिकेशन पर लागू होता है. उसके लिए, merge के नए निर्देश का इस्तेमाल करें:

bubblewrap merge
bubblewrap update
bubblewrap build

क्वालिटी की शर्तों में अपडेट

Chrome 86 ने भरोसेमंद वेब गतिविधि की क्वालिटी से जुड़ी ज़रूरी शर्तों में बदलाव किए हैं. इनके बारे में यहां बताया गया है पूरी जानकारी वाला पेज, भरोसेमंद वेब गतिविधि का इस्तेमाल करके पीडब्ल्यूए के लिए क्वालिटी की शर्तों में हुए बदलावों को पूरा करता है.

कम शब्दों में यह ज़रूरी है कि आपको यह पक्का करना चाहिए कि आपका ऐप्लिकेशन इन स्थितियों में भी काम करे, उन्हें क्रैश होने से रोकें:

  • ऐप्लिकेशन लॉन्च करते समय डिजिटल ऐसेट लिंक की पुष्टि नहीं की जा सकी
  • ऑफ़लाइन नेटवर्क संसाधन अनुरोध के लिए एचटीटीपी 200 नहीं दिखाया जा सका
  • ऐप्लिकेशन में एचटीटीपी 404 या 5xx गड़बड़ी का मैसेज.

यह पक्का करने के अलावा कि आवेदन डिजिटल ऐसेट लिंक की पुष्टि को पूरा करता है इन स्थितियों को सर्विस वर्कर मैनेज कर सकता है:

self.addEventListener('fetch', event => {
  event.respondWith((async () => {
    try {
      return await fetchAndHandleError(event.request);
    } catch {
      // Failed to load from the network. User is offline or the response
      // has a status code that triggers the Quality Criteria.
      // Try loading from cache.
      const cachedResponse = await caches.match(event.request);
      if (cachedResponse) {
        return cachedResponse;
      }
      // Response was not found on the cache. Send the error / offline
      // page. OFFLINE_PAGE should be pre-cached when the service worker
      // is activated.
      return await caches.match(OFFLINE_PAGE);
    }
  })());
});

async function fetchAndHandleError(request) {
  const cache = await caches.open(RUNTIME_CACHE);
  const response = await fetch(request);

  // Throw an error if the response returns one of the status
  // that trigger the Quality Criteria.
  if (response.status === 404 ||
      response.status >= 500 && response.status < 600) {
    throw new Error(`Server responded with status: ${response.status}`);
  }

  // Cache the response if the request is successful.
  cache.put(request, response.clone());
  return response;
}

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

export class FallbackOnErrorPlugin {
  constructor(offlineFallbackUrl, notFoundFallbackUrl, serverErrorFallbackUrl) {
    this.notFoundFallbackUrl = notFoundFallbackUrl;
    this.offlineFallbackUrl = offlineFallbackUrl;
    this.serverErrorFallbackUrl = serverErrorFallbackUrl;
  }

  checkTrustedWebActivityCrash(response) {
    if (response.status === 404 || response.status >= 500 && response.status <= 600) {
      const type = response.status === 404 ? 'E_NOT_FOUND' : 'E_SERVER_ERROR';
      const error = new Error(`Invalid response status (${response.status})`);
      error.type = type;
      throw error;
    }
  }

  // This is called whenever there's a network response,
  // but we want special behavior for 404 and 5**.
  fetchDidSucceed({response}) {
    // Cause a crash if this is a Trusted Web Activity crash.
    this.checkTrustedWebActivityCrash(response);

    // If it's a good response, it can be used as-is.
    return response;
  }

  // This callback is new in Workbox v6, and is triggered whenever
  // an error (including a NetworkError) is thrown when a handler runs.
  handlerDidError(details) {
    let fallbackURL;
    switch (details.error.details.error.type) {
      case 'E_NOT_FOUND': fallbackURL = this.notFoundFallbackUrl; break;
      case 'E_SERVER_ERROR': fallbackURL = this.serverErrorFallbackUrl; break;
      default: fallbackURL = this.offlineFallbackUrl;
    }

    return caches.match(fallbackURL, {
      // Use ignoreSearch as a shortcut to work with precached URLs
      // that have _WB_REVISION parameters.
      ignoreSearch: true,
    });
  }
}

Google Play Billing

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

Chrome 88 को Android पर ऑरिजिन ट्रायल के साथ लॉन्च किया जाएगा. इससे भरोसेमंद वेब गतिविधियां, पेमेंट रिक्वेस्ट एपीआई, और डिजिटल सामान का एपीआई Google Play Billing की मदद से परचेज़ फ़्लो लागू करें. हमें उम्मीद है कि ऑरिजिन ट्रायल की सुविधा भी उपलब्ध होगी के लिए आज़माएं.

अहम जानकारी: Google Play Billing API का अपना खुद का शब्दावली है, जिसमें क्लाइंट और बैकएंड कॉम्पोनेंट. इस सेक्शन में, एपीआई का सिर्फ़ एक छोटा सा हिस्सा शामिल किया गया है. यह हिस्सा, एपीआई के डिजिटल गुड्स एपीआई और भरोसेमंद वेब गतिविधि. पक्का करें कि आपने Google Play Billing से जुड़े दस्तावेज़ और इसे इंटिग्रेट करने से पहले, इससे जुड़े कॉन्सेप्ट को समझना प्रोडक्शन ऐप्लिकेशन.

बुनियादी फ़्लो

Play Console का मेन्यू

Play Store के ज़रिए डिजिटल प्रॉडक्ट उपलब्ध कराने के लिए, आपको Play पर अपना कैटलॉग कॉन्फ़िगर करना होगा अपने PWA से, Play Store को पेमेंट के तरीके के तौर पर कनेक्ट करें.

जब आप अपना कैटलॉग कॉन्फ़िगर करने के लिए तैयार हों, तो सबसे पहले बाईं ओर मौजूद 'प्रॉडक्ट' सेक्शन पर जाएं Play Console पर दिए गए हाथ की ओर के मेन्यू को हाइलाइट करें:

यहां आपको अपने मौजूदा इन-ऐप्लिकेशन प्रॉडक्ट और सदस्यताएं देखने का विकल्प मिलेगा. साथ ही, यहां आपको नया बटन जोड़ने के लिए, 'बनाएं' बटन ढूंढें.

ऐप्लिकेशन के अंतर्गत उत्‍पाद

प्रॉडक्ट के बारे में जानकारी

ऐप्लिकेशन में खरीदा जा सकने वाला नया प्रॉडक्ट बनाने के लिए, आपको प्रॉडक्ट आईडी, नाम, ब्यौरा, और कीमत की ज़रूरत होगी. यह समय है उपयोगी और याद रखने में आसान प्रॉडक्ट आईडी बनाना ज़रूरी है, तो आपको बाद में उनकी ज़रूरत पड़ेगी और आईडी बनाने के बाद, बदला नहीं जा सकता.

सदस्यताएं बनाते समय, आपको बिलिंग अवधि भी तय करनी होगी. आपके पास ये काम करने का विकल्प है सदस्यता के फ़ायदों की सूची बनाएं. साथ ही, सुविधाएं जोड़ें. जैसे, मुफ़्त में आज़माने की सुविधा उपलब्ध है या नहीं, शुरुआती कीमत, ग्रेस पीरियड, और फिर से सदस्यता लेने का विकल्प.

हर प्रॉडक्ट बनाने के बाद, उसे चालू करके अपने ऐप्लिकेशन में उपलब्ध कराएं.

अगर आप चाहें, तो अपने प्रॉडक्ट Play Developers API के ज़रिए जोड़ें.

कैटलॉग कॉन्फ़िगर हो जाने के बाद, पीडब्ल्यूए से चेकआउट फ़्लो को कॉन्फ़िगर किया जाता है. आपने लोगों तक पहुंचाया मुफ़्त में Google, डिजिटल प्रॉडक्ट के एपीआई और पेमेंट रिक्वेस्ट एपीआई की मदद से, यह.

डिजिटल सामान एपीआई की मदद से प्रॉडक्ट की कीमत फ़ेच करना

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

// The SKU for the product, as defined in the Play Store interface
async function populatePrice(sku) {
  try {
    // Check if the Digital Goods API is supported by the browser.
    if (window.getDigitalGoodsService) {
      // The Digital Goods API can be supported by other Payments provider.
      // In this case, we're retrieving the Google Play Billing provider.
      const service =
          await window.getDigitalGoodsService("https://play.google.com/billing");

      // Fetch product details using the `getDetails()` method.
      const details = await service.getDetails([sku]);

      if (details.length === 0) {
        console.log(`Could not get SKU: "${sku}".`);
        return false;
      }

      // The details will contain both the price and the currenncy.
      item = details[0];
      const value = item.price.value;
      const currency = item.price.currency;

      const formattedPrice = new Intl.NumberFormat(navigator.language, {
        style: 'currency', currency: currency }).format(value);

      // Display the price to the user.
      document.getElementById("price").innerHTML = formattedPrice;
    } else {
      console.error("Could not get price for SKU \"" + sku + "\".");
    }
  } catch (error) {
    console.log(error);
  }
  return false;
}

डिजिटल चीज़ों के एपीआई के साथ काम करने की सुविधा का पता लगाने के लिए, यह देखा जा सकता है कि getDigitalGoodsService() window ऑब्जेक्ट पर उपलब्ध है.

इसके बाद, पैरामीटर के तौर पर Google Play बिलिंग आइडेंटिफ़ायर का इस्तेमाल करके window.getDigitalGoodsService() को कॉल करें. इससे Google Play Billing के लिए सेवा का इंस्टेंस मिलेगा और अन्य वेंडर, सहायता लागू कर सकते हैं के अलग-अलग आइडेंटिफ़ायर होंगे.

आखिर में, Google Play Billing ऑब्जेक्ट के रेफ़रंस के तौर पर getDetails() को कॉल करें. यह उस ऑब्जेक्ट के लिए है जो SKU पास कर रहा है पैरामीटर के रूप में आइटम. यह तरीका आपको ज़्यादा जानकारी वाला ऑब्जेक्ट दिखाएगा, जिसमें कीमत और उपयोगकर्ता को दिखाई जा सकने वाली आइटम की मुद्रा.

परचेज़ फ़्लो शुरू करना

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

Google Play Billing के साथ एपीआई का इस्तेमाल करने के लिए, आपको पेमेंट का ऐसा तरीका जोड़ना होगा जो इसमें https://play.google.com/billing नाम का इस्तेमाल किया जा सकने वाला मेटोड मौजूद है. साथ ही, इसमें SKU को डेटा के हिस्से के तौर पर जोड़ा जाता है इंस्ट्रुमेंट के लिए:

const supportedInstruments = [{
  supportedMethods: "https://play.google.com/billing",
  data: {
    sku: sku
  }
}];

इसके बाद, हमेशा की तरह एक PaymentRequest ऑब्जेक्ट बनाएं और एपीआई का इस्तेमाल हमेशा की तरह करें

const request = new PaymentRequest(supportedInstruments, details);

खरीदारी स्वीकार करें

लेन-देन पूरा होने के बाद, आपको स्वीकार करने के लिए Digital चीज़ें एपीआई का इस्तेमाल करना होगा भुगतान. PaymentRequest के रिस्पॉन्स ऑब्जेक्ट में एक टोकन होगा, जिसका इस्तेमाल लेन-देन स्वीकार करें:

const response = await request.show();
const token = response.details.token;
const service =
          await window.getDigitalGoodsService("https://play.google.com/billing");
await service.acknowledge(token, 'onetime');

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

मौजूदा एनटाइटलमेंट की जांच करना

ऐसा हो सकता है कि किसी उपयोगकर्ता ने प्रमोशन कोड रिडीम किया हो या आपके प्रॉडक्ट की सदस्यता पहले से मौजूद हो. तय सीमा में यह पुष्टि करने के लिए कि उपयोगकर्ता के पास सही एनटाइटलमेंट हैं, डिजिटल प्रॉडक्ट सेवा के लिए listPurchases() का कमांड. इससे आपकी वह सभी खरीदारी वापस आ जाएगी ग्राहक ने आपके ऐप्लिकेशन में बनाया है. इसके अलावा, स्वीकार न किए गए किसी भी अनुरोध को स्वीकार किया जा सकता है खरीदारी का डेटा इकट्ठा करती हैं, ताकि यह पक्का किया जा सके कि उपयोगकर्ता अपने एनटाइटलमेंट को सही तरीके से रिडीम कर रहा है.

const purchases = await itemService.listPurchases();
for (p of purchases) {
  if (!p.acknowledged) {
    await itemService.acknowledge(p.purchaseToken, 'onetime');
  }
}

ChromeOS के Play Store पर अपलोड करें

ChromeOS Play Store में, Chrome 85 के बाद से भरोसेमंद वेब ऐक्टिविटी की सुविधा भी उपलब्ध है. प्रोसेस अपने ऐप्लिकेशन को 'Chrome वेब स्टोर' में शामिल करने की सुविधा, ChromeOS के लिए एक ही तरह से काम करती है.

ऐप्लिकेशन बंडल बनाने के बाद, Play Console ज़रूरी शर्तें पूरी करने में आपकी मदद करेगा Play Store पर ऐप्लिकेशन को लिस्ट करने का तरीका. Play Console के दस्तावेज़ में, आपको इन कामों के लिए मदद मिल सकती है अपना ऐप स्टोर पेज बनाएं, अपनी apk फ़ाइलों और अन्य सेटिंग को मैनेज करें. साथ ही, निर्देश भी मैनेज करें ऐप्लिकेशन की टेस्टिंग करने और ऐप्लिकेशन को सुरक्षित तरीके से रिलीज़ करने के लिए.

अपने ऐप्लिकेशन को सिर्फ़ Chromebook तक सीमित करने के लिए, शुरू करते समय --chromeosonly फ़्लैग जोड़ें Bubblewrap में ऐप्लिकेशन:

bubblewrap init --manifest="https://example.com/manifest.json" --chromeosonly

बबल रैप के बिना, मैन्युअल तरीके से अपना ऐप्लिकेशन बनाते समय, अपने ऐप्लिकेशन में uses-feature फ़्लैग जोड़ें Android मेनिफ़ेस्ट:

<uses-feature  android:name="org.chromium.arc" android:required="true"/>

अगर आपके स्टोर पेज को किसी Android ऐप्लिकेशन के साथ शेयर किया गया है, तो सिर्फ़ ChromeOS वाले पैकेज वर्शन में Android ऐप्लिकेशन पैकेज वर्शन से बाद का हो. ChromeOS बंडल वर्शन को Android वर्शन की तुलना में बहुत ज़्यादा है, इसलिए आपको दोनों वर्शन अपडेट करने की ज़रूरत नहीं है रिलीज़.