Android पर WebAPK

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

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

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

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

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

इन आंशिक manifest.json पर विचार करें:

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

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

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/ एक स्टैंडअलोन ऐप्लिकेशन के तौर पर खुलेगा. इसमें ब्राउज़र Chrome का इस्तेमाल नहीं किया जाएगा.

पहले की तरह, जनरेट किए गए वेबAPK में एक इंटेंट फ़िल्टर शामिल होगा. हालांकि, 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 देखें.

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

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

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

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

WebAPK अपडेट किया जा रहा है

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

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

स्प्लैश स्क्रीन जनरेट करने के लिए किन आइकॉन का इस्तेमाल किया जाता है? :
हमारा सुझाव है कि आप कम से कम दो आइकॉन उपलब्ध कराएं: स्प्लैश स्क्रीन के लिए 192 पिक्सल और 512 पिक्सल. हमें आपसे पता चला कि स्प्लैश स्क्रीन पर दिखने वाले आइकॉन बहुत छोटे थे. Chrome 71 या उसके बाद के वर्शन में जनरेट किए गए WebAPK, स्प्लैश स्क्रीन पर एक बड़ा आइकॉन दिखाएंगे. जब तक सुझाए गए आइकॉन दिए गए हैं, तब तक आपको कुछ करने की ज़रूरत नहीं है.
अगर उपयोगकर्ता ने पहले से ही साइट के लिए खास ऐप्लिकेशन इंस्टॉल कर लिया है, तो क्या होगा?
आज ही होम स्क्रीन पर जोड़ने की तरह ही, उपयोगकर्ता किसी भी नेटिव ऐप्लिकेशन से अलग साइट जोड़ पाएंगे. अगर आपको लगता है कि उपयोगकर्ता इन दोनों को इंस्टॉल करेंगे, तो हमारा सुझाव है कि आप अपनी साइट के आइकॉन या नाम को अपने खास ऐप्लिकेशन से अलग रखें.
अगर उपयोगकर्ता Chrome की कैश मेमोरी मिटाता है, तो क्या मेरी इंस्टॉल की गई साइट का स्टोरेज मिटा दिया जाएगा?
हां.
क्या नया डिवाइस खरीदने पर, मेरा ऐप्लिकेशन फिर से इंस्टॉल होगा?
अभी तो नहीं, लेकिन हमें लगता है कि यह एक अहम क्षेत्र है और हम इसके काम करने के तरीकों की जांच कर रहे हैं.
अनुमतियां कैसे मैनेज की जाती हैं? मुझे Chrome का प्रॉम्प्ट दिखेगा या Android का?
अनुमतियां अब भी Chrome के ज़रिए प्रबंधित की जाएंगी. उपयोगकर्ताओं को अनुमतियां देने के लिए, Chrome के संकेत दिखेंगे. साथ ही, वे Chrome की सेटिंग में जाकर इनमें बदलाव कर सकते हैं.
यह Android के किन वर्शन पर काम करेगा?
प्रोग्रेसिव वेब ऐप्लिकेशन, Android के उन सभी वर्शन पर इंस्टॉल किए जा सकते हैं जो Android के लिए Chrome पर काम करते हैं. इनमें खास तौर पर, Jelly Bean और उसके बाद के वर्शन इंस्टॉल किए जा सकते हैं.
क्या यह वेबव्यू का इस्तेमाल करता है?
नहीं, साइट Chrome के उसी वर्शन में खुलती है जिससे उपयोगकर्ता ने साइट को जोड़ा है.
क्या हम Play Store पर बनाए गए APK अपलोड कर सकते हैं?
नहीं. अगर आपको अपना APK अपलोड करना है, तो भरोसेमंद वेब गतिविधियां देखें.
क्या ये Play Store पर उपलब्ध हैं?
नहीं. अगर आपको Play Store में लिस्टिंग के लिए अपना APK अपलोड करना है, तो भरोसेमंद वेब गतिविधियां देखें.
मैं Android पर किसी अन्य ब्राउज़र का डेवलपर हूं, क्या मुझे अपने ऐप्लिकेशन को आसानी से इंस्टॉल करने की सुविधा मिल सकती है? :
हम इस पर काम कर रहे हैं. हम इसे Android पर सभी ब्राउज़र पर उपलब्ध कराने के लिए प्रतिबद्ध हैं और हमारे पास जल्द ही इसके बारे में और जानकारी होगी.