ऐप्लिकेशन के अंदर इंस्टॉल करने का अनुभव देने का तरीका

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

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

Spotify के पीडब्ल्यूए में मौजूद, 'ऐप्लिकेशन इंस्टॉल करें' बटन
Spotify के PWA में मौजूद "ऐप्लिकेशन इंस्टॉल करें" बटन.

इंस्टॉलेशन का प्रमोशन करना है या नहीं, यह तय करते समय इस बात का ध्यान रखें कि उपयोगकर्ता आम तौर पर आपके PWA का इस्तेमाल कैसे करते हैं. उदाहरण के लिए, अगर उपयोगकर्ताओं का कोई ऐसा सेट है जो हफ़्ते में कई बार आपके PWA का इस्तेमाल करता है, तो इन उपयोगकर्ताओं को फ़ोन की होम स्क्रीन या डेस्कटॉप ऑपरेटिंग सिस्टम के स्टार्ट मेन्यू से आपके ऐप्लिकेशन को लॉन्च करने की सुविधा से फ़ायदा मिल सकता है. standalone, minimal-ui या window-control-overlay मोड में इंस्टॉल किए गए ब्राउज़र के टूलबार को विंडो से हटाने पर, स्क्रीन पर ज़्यादा जगह मिलती है. इससे, प्रोडक्टिविटी और मनोरंजन से जुड़े कुछ ऐप्लिकेशन भी फ़ायदा पाते हैं.

ज़रूरी शर्तें

शुरू करने से पहले, पक्का करें कि आपका PWA, इंस्टॉल करने से जुड़ी ज़रूरी शर्तों को पूरा करता हो. आम तौर पर, इनमें वेब ऐप्लिकेशन मेनिफ़ेस्ट होना शामिल है.

इंस्टॉलेशन का प्रमोशन करना

यह दिखाने के लिए कि आपका प्रोग्रेसिव वेब ऐप्लिकेशन इंस्टॉल किया जा सकता है और ऐप्लिकेशन में इंस्टॉल करने का कस्टम फ़्लो उपलब्ध कराने के लिए:

  1. beforeinstallprompt इवेंट सुनें.
  2. beforeinstallprompt इवेंट को सेव करें, ताकि वह बाद में इंस्टॉल फ़्लो को ट्रिगर कर सके.
  3. उपयोगकर्ता को बताएं कि आपका PWA इंस्टॉल किया जा सकता है. साथ ही, इन-ऐप्लिकेशन इंस्टॉलेशन फ़्लो शुरू करने के लिए, कोई बटन या अन्य एलिमेंट दें.

beforeinstallprompt इवेंट के लिए सुनना

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

// Initialize deferredPrompt for use later to show browser install prompt.
let deferredPrompt;

window.addEventListener('beforeinstallprompt', (e) => {
  // Prevent the mini-infobar from appearing on mobile
  e.preventDefault();
  // Stash the event so it can be triggered later.
  deferredPrompt = e;
  // Update UI notify the user they can install the PWA
  showInstallPromotion();
  // Optionally, send analytics event that PWA install promo was shown.
  console.log(`'beforeinstallprompt' event was fired.`);
});

इन-ऐप्लिकेशन इंस्टॉलेशन फ़्लो

इन-ऐप्लिकेशन इंस्टॉलेशन की सुविधा देने के लिए, कोई ऐसा बटन या इंटरफ़ेस एलिमेंट दें जिस पर उपयोगकर्ता आपका ऐप्लिकेशन इंस्टॉल करने के लिए क्लिक या टैप कर सके. जब एलिमेंट पर क्लिक या टैप किया जाता है, तो सेव किए गए beforeinstallprompt इवेंट (deferredPrompt वैरिएबल में सेव किया गया) पर prompt() को कॉल करें. यह उपयोगकर्ता को इंस्टॉल करने के लिए एक मॉडल डायलॉग दिखाता है. इसमें उपयोगकर्ता से इस बात की पुष्टि करने के लिए कहा जाता है कि क्या उन्हें आपका PWA इंस्टॉल करना है.

buttonInstall.addEventListener('click', async () => {
  // Hide the app provided install promotion
  hideInstallPromotion();
  // Show the install prompt
  deferredPrompt.prompt();
  // Wait for the user to respond to the prompt
  const { outcome } = await deferredPrompt.userChoice;
  // Optionally, send analytics event with outcome of user choice
  console.log(`User response to the install prompt: ${outcome}`);
  // We've used the prompt and can't use it again, throw it away
  deferredPrompt = null;
});

userChoice प्रॉपर्टी एक प्रॉमिस है, जो उपयोगकर्ता की पसंद के हिसाब से रिज़ॉल्व होती है. टास्क को बाद में पूरा करने के लिए, prompt() को सिर्फ़ एक बार कॉल किया जा सकता है. अगर उपयोगकर्ता इसे खारिज कर देता है, तो आपको तब तक इंतज़ार करना होगा, जब तक beforeinstallprompt इवेंट फिर से ट्रिगर नहीं हो जाता. आम तौर पर, userChoice प्रॉपर्टी ठीक होने के तुरंत बाद ऐसा होता है.

यह पता लगाना कि PWA इंस्टॉल हो गया है या नहीं

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

window.addEventListener('appinstalled', () => {
  // Hide the app-provided install promotion
  hideInstallPromotion();
  // Clear the deferredPrompt so it can be garbage collected
  deferredPrompt = null;
  // Optionally, send analytics event to indicate successful install
  console.log('PWA was installed');
});

यह पता लगाना कि PWA को कैसे लॉन्च किया गया

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

यह ट्रैक करना कि PWA को कैसे लॉन्च किया गया

उपयोगकर्ता आपके PWA को कैसे लॉन्च करते हैं, यह ट्रैक करने के लिए matchMedia() मीडिया क्वेरी की जांच करने के लिए display-mode का इस्तेमाल करें.

function getPWADisplayMode() {
  if (document.referrer.startsWith('android-app://'))
    return 'twa';
  if (window.matchMedia('(display-mode: browser)').matches)
    return 'browser';
  if (window.matchMedia('(display-mode: standalone)').matches || navigator.standalone)
    return 'standalone';
  if (window.matchMedia('(display-mode: minimal-ui)').matches)
    return 'minimal-ui';
  if (window.matchMedia('(display-mode: fullscreen)').matches)
    return 'fullscreen';
  if (window.matchMedia('(display-mode: window-controls-overlay)').matches)
    return 'window-controls-overlay';

  return 'unknown';
}

डिसप्ले मोड बदलने पर ट्रैक करना

उपयोगकर्ता browser और अन्य डिसप्ले मोड के बीच स्विच करता है या नहीं, यह ट्रैक करने के लिए, display-mode मीडिया क्वेरी में होने वाले बदलावों को सुनें.

// Replace "standalone" with the display mode used in your manifest
window.matchMedia('(display-mode: standalone)').addEventListener('change', () => {
  // Log display mode change to analytics
  console.log('DISPLAY_MODE_CHANGED', getPWADisplayMode());
});

मौजूदा डिसप्ले मोड के आधार पर यूज़र इंटरफ़ेस (यूआई) अपडेट करना

इंस्टॉल किए गए PWA के तौर पर लॉन्च होने पर, PWA के लिए अलग बैकग्राउंड कलर लागू करने के लिए, कंडीशनल सीएसएस का इस्तेमाल करें:

@media all and (display-mode: standalone) {
  body {
    background-color: yellow;
  }
}

अपने ऐप्लिकेशन का आइकॉन और नाम अपडेट करना

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