Android पर WebAPK

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

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

WebAPK जनरेट करने के लिए, Chrome वेब ऐप्लिकेशन मेनिफ़ेस्ट और अन्य मेटाडेटा देखता है. मेनिफ़ेस्ट में कोई अपडेट मिलने पर, Chrome को नया APK जनरेट करना होगा.

Android इंटेंट फ़िल्टर

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

यहां दिए गए manifest.json पर ध्यान दें:

"start_url": "/",
"display": "standalone",

जब ऐप्लिकेशन लॉन्चर से इसका इस्तेमाल करने वाला कोई वेब ऐप्लिकेशन लॉन्च किया जाता है, तो यह https://example.com/ के तौर पर खुलता है. इसमें ब्राउज़र क्रोम नहीं होता.

WebAPK में ये इंटेंट फ़िल्टर शामिल होंगे:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data
    android:scheme="https"
    android:host="example.com"
    android:pathPrefix="/" />
</intent-filter>

अगर कोई उपयोगकर्ता इंस्टॉल किए गए ऐप्लिकेशन में मौजूद किसी लिंक पर क्लिक करके https://example.com/read पर जाता है, तो इंटेंट के ज़रिए उस लिंक को कैप्चर किया जाएगा और उसे प्रोग्रेसिव वेब ऐप्लिकेशन में खोला जाएगा.

इंटेंट फ़िल्टर को सीमित करने के लिए scope का इस्तेमाल करना

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

यहां दिए गए manifest.json पर ध्यान दें:

"scope": "/app/",
"start_url": "/app/",
"display": "standalone",

ऐप्लिकेशन लॉन्चर से लॉन्च किए जाने पर, यह https://example.com/app/ ब्राउज़र क्रोम के बिना, स्टैंडअलोन ऐप्लिकेशन के तौर पर खुलेगा.

पहले की तरह, जनरेट किए गए WebAPK में इंटेंट फ़िल्टर शामिल होगा. हालांकि, इसमें APK के AndroidManifest.xml में अलग android:pathPrefix एट्रिब्यूट होगा:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data
    android:scheme="https"
    android:host="example.com"
    android:pathPrefix="/app/" />
</intent-filter>

आइए, कुछ उदाहरण देखें:

यह करें

https://example.com/app/ - /app/ में

यह करें

https://example.com/app/read/book - /app/ में

ऐसा न करें

https://example.com/help/ - /app/ में नहीं है

ऐसा न करें

https://example.com/about/ - /app/ में नहीं है

scope के बारे में ज़्यादा जानने के लिए, scope देखें. इसमें यह भी बताया गया है कि इसे सेट न करने पर क्या होता है और इसका इस्तेमाल करके, अपने ऐप्लिकेशन का दायरा कैसे तय किया जा सकता है.

अनुमतियां मैनेज करना

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

स्टोरेज और ऐप्लिकेशन की स्थिति मैनेज करना

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

WebAPK अपडेट करना

WebAPK को अपडेट करने के तरीके के बारे में जानकारी, Chrome, वेब ऐप्लिकेशन मेनिफ़ेस्ट के अपडेट को कैसे मैनेज करता है लेख में दी गई है.

अक्सर पूछे जाने वाले सवाल

स्प्लैश स्क्रीन जनरेट करने के लिए, किन आइकॉन का इस्तेमाल किया जाता है?

हमारा सुझाव है कि स्प्लैश स्क्रीन के लिए, कम से कम दो साइज़ के आइकॉन उपलब्ध कराएं: 192 पिक्सल और 512 पिक्सल. हमें पता चला है कि स्प्लैश स्क्रीन पर मौजूद आइकॉन बहुत छोटे हैं. Chrome 71 या इसके बाद के वर्शन में जनरेट किए गए WebAPK, स्प्लैश स्क्रीन पर बड़ा आइकॉन दिखाएंगे. सुझाए गए आइकॉन उपलब्ध कराने पर, आपको कुछ भी करने की ज़रूरत नहीं है.

अगर उपयोगकर्ता ने साइट के लिए खास ऐप्लिकेशन पहले से ही इंस्टॉल किया हुआ है, तो क्या होगा?

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

अगर उपयोगकर्ता Chrome की कैश मेमोरी मिटाता है, तो क्या इंस्टॉल की गई मेरी साइट का स्टोरेज मिट जाएगा?

हां.

क्या नया डिवाइस मिलने पर, मेरा ऐप्लिकेशन फिर से इंस्टॉल हो जाएगा?

फ़िलहाल, ऐसा नहीं किया जा सकता. हालांकि, हमारा मानना है कि यह एक अहम सुविधा है और हम इसे उपलब्ध कराने के तरीकों पर काम कर रहे हैं.

अनुमतियों को कैसे मैनेज किया जाता है? मुझे Chrome का अनुरोध दिखेगा या Android का?

अनुमतियां अब भी Chrome के ज़रिए मैनेज की जाएंगी. उपयोगकर्ताओं को Chrome में अनुमतियां देने के लिए प्रॉम्प्ट दिखेंगे. साथ ही, वे Chrome की सेटिंग में जाकर, इन अनुमतियों में बदलाव कर पाएंगे.

यह सुविधा Android के किन वर्शन पर काम करेगी?

प्रोग्रेसिव वेब ऐप्लिकेशन को Android के उन सभी वर्शन पर इंस्टॉल किया जा सकता है जिन पर Android के लिए Chrome चलता है. खास तौर पर, Jelly Bean और इसके बाद के वर्शन पर.

क्या यह WebView का इस्तेमाल करता है?

नहीं, साइट उसी Chrome वर्शन में खुलती है जिससे उपयोगकर्ता ने साइट को जोड़ा था.

क्या हम Play Store पर बनाए गए APK अपलोड कर सकते हैं?

नहीं. अगर आपको अपना APK अपलोड करना है, तो भरोसेमंद वेब गतिविधियां देखें.

क्या ये Play Store पर मौजूद हैं?

नहीं. अगर आपको Play Store में लिस्टिंग के लिए अपना APK अपलोड करना है, तो भरोसेमंद वेब ऐक्टिविटी देखें.

मैं Android पर किसी दूसरे ब्राउज़र का डेवलपर हूं. क्या मुझे बिना किसी रुकावट के इंस्टॉल करने की यह सुविधा मिल सकती है?

हम इस पर काम कर रहे हैं. हम इस सुविधा को Android पर सभी ब्राउज़र के लिए उपलब्ध कराने के लिए प्रतिबद्ध हैं. हम जल्द ही इसके बारे में ज़्यादा जानकारी देंगे.