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/ को स्टैंडअलोन ऐप्लिकेशन के तौर पर खोलता है.

वेबएपीके में ये इंटेंट फ़िल्टर शामिल होंगे:

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

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