首页 > 其他分享 >PWA入门:手把手教你制作一个PWA应用

PWA入门:手把手教你制作一个PWA应用

时间:2024-09-23 15:23:37浏览次数:7  
标签:console 入门 手把手 https PWA com deferredPrompt log

 

 

  根目录创建 manifest.json

{
    "name": "我是pwa",
    "short_name": "pwa是我",
    "start_url": "/", //启动页面,如果首页是https://www.abc.com/,则直接用“/”即可
    "display": "standalone",
    "background_color": "#fff",
    "description": "哈哈哈哈哈哈哈哈哈哈哈哈",
    "icons": [
      {
        "src": "images/admin_logo.png",
        "sizes": "192x192",
        "type": "image/png"
      }
    ]
  }

  根目录创建 sw.js

  根目录创建 index.html

 

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <title>标题</title>
    <link rel="manifest" href="/manifest.json" />
</head>
<body>
    <script>
        let deferredPrompt = null;
 
        window.addEventListener('beforeinstallprompt', (event) => {
            // 阻止事件的默认行为
            event.preventDefault();
            // 存储事件以供后续使用
            deferredPrompt = event;
            console.log(event)
            // 可以在这里触发一个显示按钮或提示的操作
            console.log('已提示用户安装PWA');
        });
        
        async function addToDesktop(){
            console.log(deferredPrompt)
            if (deferredPrompt) {
                // 显示添加到主屏幕的提示
                deferredPrompt.prompt();
                // 等待用户响应
                const userResponse = await deferredPrompt.userChoice;
                if (userResponse.outcome === 'accepted') {
                    console.log('PWA已添加到主屏幕');
                } else {
                    console.log('用户选择不将PWA添加到主屏幕');
                }
                // 重置提示
                deferredPrompt = null;
            }
        }
</script>
 
<button onclick="addToDesktop()">点击安装</button>

<script>
    // window.addEventListener('load', async () => {
    //     if ('serviceWorker' in navigator) {
    //         try {
    //             const registration = await navigator.serviceWorker.register('./sw.js')
    //             console.log('注册成功', registration)
    //         } catch (e) {
    //             console.log('注册失败')
    //         }
    //     }
    // })

</script>
</body>
</html>

 

 

https://cloud.tencent.com/developer/article/1454738

https://juejin.cn/post/7002428201137864712

https://devpress.csdn.net/vue/62f907b2c6770329307fcd1d.html

https://www.jianshu.com/p/2b995a303a25

https://devpress.csdn.net/vue/62f902067e6682346618b59c.html

 

https://nuxt.com/modules/vite-pwa-nuxt

https://devpress.csdn.net/vue/62f8ff80c6770329307fca38.html

 

https://blog.csdn.net/GoldenLegs/article/details/111190736

 

https://www.pwabuilder.com/

 

https://developer.mozilla.org/zh-CN/docs/Web/API/BeforeInstallPromptEvent#%E6%B5%8F%E8%A7%88%E5%99%A8%E5%85%BC%E5%AE%B9%E6%80%A7

 

https://segmentfault.com/a/1190000015015561?utm_source=sf-similar-article

 

 

https://blog.csdn.net/pengjunlee/article/details/101758914

https://blog.csdn.net/github_38967228/article/details/137791373

https://www.cnblogs.com/LiangSenCheng/p/16702710.html

 

 

https://learn.microsoft.com/zh-cn/microsoft-edge/progressive-web-apps-chromium/how-to/

 

标签:console,入门,手把手,https,PWA,com,deferredPrompt,log
From: https://www.cnblogs.com/li-sir/p/18427135

相关文章

  • ROS 编程入门的介绍
    2.1创建ROS功能包ROS(RobotOperatingSystem)是一种开源的机器人软件框架,广泛用于机器人开发中。通过使用ROS,开发者可以轻松创建和管理机器人应用程序。在本节中,我们将介绍如何创建一个ROS功能包并实现一些基本功能。2.1.1使用ROS主题ROS主题(Topic)是一种发布/订阅机制,允许......
  • kettle从入门到精通 第八十六课 ETL之kettle kettle调用https接口忽略SSL校验
     1、在使用kettle调用接口的时候不可避免要调用http或者https接口,调用http接口kettle可以正常工作,但是遇到https接口的时候kettle就会提示证书有误,无法正常调用接口,今天咱们一起通过自研插件的方式来解决这个问题。自研插件需要有一定的java基础,git上有比较多的例子,本次不讲解如......
  • IDEA的使用,手把手带你快速入门IDEA
    ??新建包及类的方式1.在src内右键选择Package2.在包内右键选择javaClass运行java类的方式创建模块Eclipse和Idea的对比?IDEA的常用配置设置鼠标滚轮修改字体大小修改类头的文档注释信息内容如下:修改字符集?设置自动编译??设置快捷键?首次使用方法======创......
  • 【Kubernetes基础】Helm工具入门与使用
    前言Helm是Kubernetes包管理工具,类似CentOS的yum包管理工具学习Kubernetes,了解如何通过Helm安装跟管理Kubernetes应用很有必要,下面就来介绍Helm的入门使用。一、Helm基本管理1.1检查Helm版本helmversionhelmversion二、配置Helm仓库Helm可以通过添加仓库源来使......
  • AI大模型教程 Prompt提示词工程 AI原生应用开发零基础入门到实战【2024超细超全,建议收
    在AGI(通用人工智能)时代,那些既精通AI技术、又具备编程能力和业务洞察力的复合型人才将成为最宝贵的资源。为此,我们提出了‘AI全栈工程师’这一概念,旨在更精准地描述这一复合型人才群体,而非过分夸大其词。学习目标:这门课的目标,就是培养「AI全栈」人才。通过这门课程的学习,我们......
  • Python 类型提示全解析:从入门到精通的必备技巧(如何让Python代码更清晰、错误更少)
    文章目录......
  • Spring Boot入门
    SpringBoot是一个用于简化Spring应用程序开发的框架,它提供了快速构建、开箱即用的特性,使得开发人员可以更快速地搭建和部署应用程序。SpringBoot的核心理念是“约定优于配置”,它通过自动化配置和预定义的依赖项,减少了开发人员在项目配置上的工作量。入门SpringBoot的......
  • 程序员入门大模型的路径和资源,这篇足够了
    随着人工智能技术的加速演进,AI大模型已成为全球科技竞争的新高地,发展潜力巨大。通用大模型、行业大模型、端侧大模型等如雨后春笋般涌现,广泛应用于经济社会多个领域,如金融、医疗、电商、影视、传媒等,打开了通用人工智能的大门,推动了新一轮的科技革命与产业变革。今天给大......
  • 【TS】TypeScript基础入门篇以及实践案例
    Array和Tuple//最简单的方法是使用「类型+方括号」来表示数组:letarrOfNumbers:number[]=[1,2,3,4]//数组的项中不允许出现其他的类型://数组的一些方法的参数也会根据数组在定义时约定的类型进行限制:arrOfNumbers.push(3)arrOfNumbers.push('abc')//报错//元......
  • Java 入门基础篇08 - Java的变量与数据类型的认识
    1.变量概述什么是变量在程序运行的过程中其值可以在某个范围改变的量变量的作用在程序运行过程中存放某一个不断发生改变的值,在运行时JVM会为变量分配一块内存空间如何定义变量数据类型变量名=变量值;在java中定义变量时必须指定数据类型1. 数据类型数据类型概述......