Add PWA download banner to mobile navigation #1207
Labels
complexity: moderate
Time needed to do this ticket will be moderate e.g. 1-2 days
feature/enhancement
New feature or request
first-timers-friendly
Appropriate for first time contributors.
good-first-issue
Good for newcomers
priority: soon
Should be prioritized soon.
Milestone
Overview
Bloom is a PWA app which means it can be installed/downloaded as a browser app. We currently don't promote this feature, so most users would be unaware that the app can be installed using the browser button.
This task involves adding a banner to the mobile navigation drawer to promote the PWA, with an "Install" button to trigger the download for chromium-based browsers, and further UI for iOS browsers. Note that iOS doesn't support have a function to trigger installing the app, so we instead show an extra description instructing iOS users how to install the app.
There are subsequent PWA tasks linked to the PWA epic issue.
Be aware that there is a similar task to add a banner to desktop - the banner container and text string are different, but much of the logic will remain the same, so consider making the code reusable for this second use case.
Design
This is the banner shown for all browsers
This is the banner shown for iOS only, after the user clicks "Install" in the previous banner
Note that the icons used are
ios-share
andadd-box
in material icons which is already integrated. They are 20x20pxAction Items
NavigationPWABanner
incomponents/banner
beforeinstallprompt
- see this and this resourceif (userCookiesAccepted) Cookies.set('pwaBannerDismissed', 'true')
and new redux stateuser.pwaDismissed
. SeesetReferralPartner
for an example.Resources/Instructions
See the resources below for more on PWAs.
https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/How_to/Trigger_install_prompt
https://learn.microsoft.com/en-us/microsoft-edge/progressive-web-apps-chromium/
https://www.freecodecamp.org/news/what-are-progressive-web-apps/
The text was updated successfully, but these errors were encountered: