搜索插件、代码仓与 APP 分类

插件详情v0.0.6

pwa_install

一个 Flutter 包,可让您提示移动网页用户将您的 Flutter 应用安装为 PWA

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
3030
喜欢数
100
Pub 分数
140

安装插件

flutter pub add pwa_install

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

pwa_install 包使 Flutter 应用能够提示移动网页用户将他们的应用安装为渐进式 Web 应用(PWA)。它检测用户是否通过移动设备上的网页浏览器访问应用,并触发原生安装提示,从而提高用户参与度和留存率。该包与 Flutter 的 Web 平台无缝集成,支持多种操作系统,包括 Android、iOS、macOS、Windows 和 Linux。它利用浏览器级别的 PWA 功能,提供流畅的安装体验。

适合场景

  • 提示网络用户安装PWA
  • 提高移动浏览器上的应用参与度
  • 改进基于 Web 的 Flutter 应用的留存率
  • 通过 PWA 启用离线访问
  • 简化跨平台部署
  • 支持混合应用分发

主要特点

  • 检测移动网页访问
  • 触发原生 PWA 安装提示
  • 跨多个平台运行
  • 所需设置最少
  • 与 Flutter Web 集成
  • 利用浏览器 PWA API

适合对象

  • 开发面向网络的 Flutter 应用程序的开发者
  • 针对移动网页用户的团队
  • 旨在采用 PWA 的应用
  • 需要低摩擦安装的项目
  • 跨平台网页应用
  • 混合应用策略

使用建议

  • PWA 功能需要 HTTPS
  • 仅限支持 PWA 安装提示的浏览器
  • 可能不会在所有移动设备上触发
  • 取决于用户权限设置
  • 不适用于非网页平台
  • 安装行为因浏览器而异

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

PWA Install

A small Flutter package that allows you to prompt mobile web users to install your Flutter app as a progressive web application (PWA) on demand.

A very basic example can be found here: PWA Install

The contents of this package are based on this article by Pete LePage (@petele)

Out-of-the-Box

As of release 1.20, all Flutter apps can be installed as PWAs. Combine this with the fact that all Chromium based browsers support PWAs and it becomes clear that designing your Flutter application for a mobile browser can be the most effective way of reaching a large audience.

When a Flutter app is opened in a supported browser, the user will see an install prompt like this:

Mobile Prompt Web Prompt
img.png img.png

This is awesome, but there's a caveat. The browser will only show the install prompt to users the first time they open your app. If the user refreshes the page or returns to the app while it's still in their browser history, the prompt will not be shown.

The PWA Install Package

With this package, you can prompt the user to install your app as a PWA on demand (e.g, on a button click). This package works by capturing the beforeinstallprompt event web browsers use to install PWAs. The event is captured when your app is launched and can be called anytime thereafter.

Setup

1. Update index.html

Add the following <script> tag to the body of web/index.html:

<!-- Capture PWA install prompt event -->
<script>
    let deferredPrompt;

    window.addEventListener('beforeinstallprompt', (e) => {
      deferredPrompt = e;
    });

    function promptInstall(){
       deferredPrompt.prompt();
    }

    // Listen for app install event
    window.addEventListener('appinstalled', () => {
      deferredPrompt = null;
      appInstalled();
    });

    // Track how PWA was launched (either from browser or as PWA)
    function getLaunchMode() {
      const isStandalone = window.matchMedia('(display-mode: standalone)').matches;
      if(deferredPrompt) hasPrompt();
      if (document.referrer.startsWith('android-app://')) {
        appLaunchedAsTWA();
      } else if (navigator.standalone || isStandalone) {
        appLaunchedAsPWA();
      } else {
        window.appLaunchedInBrowser();
      }
    }
</script>

2. Call PWAInstall().setup()

The following method can be called in main.dart before calling runApp(). PWAInstall() is instantiated as a singleton so you can use the class directly.

Future<void> main() async {

  // Add this
  PWAInstall().setup(installCallback: () {
    debugPrint('APP INSTALLED!');
  });

  runApp(MaterialApp(home: App()));
}

3. Check if the Install Prompt is enabled

Before calling the promptInstall_() method, you can check if the Install Prompt is available using PWAInstall().installPromptEnabled.

installPromptEnabled will be true if:

  • [x] The app was launched in a browser (It doesn't make sense to prompt a PWA install if the app is already running as a PWA)
  • [x] The beforeinstallprompt event was captured.

promptInstall_() won't do anything if installPromptEnabled is false so you should check this flag before attempting to call the prompt.

4. Call PWAInstall().promptInstall_()

Finally, call PWAInstall().promptInstall_() to show the install prompt.

Prompt Config

App Name

You can change the app name that's displayed in the prompt by updating the "name" field in web/manifest.json.

img.png

App Logo

The logo displayed in the prompt also comes from the web/manifest.json file.

  1. (Optional) Use a website like favicon.io to generate your web icons
  2. Add your logos to the web/icons folder

img.png

  1. Add the following lines to the tag in index.html:
<link rel="icon" type="image/png" sizes="32x32" href="/icons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/icons/favicon-16x16.png">

img.png

Screenshots

In addition to the name and logo, you can also add optional screenshots to the manifest.json file.

"screenshots": [{
    "src": "images/app_screenshot.webp",
    "platform": "windows",
    "label": "PWA is the way!"
  }],

Note that the screenshots will not appear in every browser. After they are added, your new install prompt will look like this: images

Troubleshooting

Supported Browsers

You can find all supported browsers here.

Support

Buy Me A Coffee

Keep My Lights On

:heart: Sponsor on GitHub

所属分类

依赖

依赖清单 1 项

  • js^0.7.1

源码仓库

使用此插件的项目