[译] PWA 再进化,可以生成一个安卓原生的 WebAPK 了
2401_84153262 2024-09-10 09:03:01 阅读 69
校对者:[maoqyhz] (https://github.com/maoqyhz)
在安卓系统上,网络应用安装横幅不仅仅只是将渐进式网络应用(PWA)添加到用户的主屏幕。Chrome 会自动为你的应用生成一个特殊的 APK,有时候我们称之为 WebAPK。 将应用以 APK 的形式安装到手机上,使得它能够出现在用户的应用程序启动器和系统设置里,以及注册一系列 intent filters。
为了生成 WebAPK,Chrome 需要检查 web app manifest 和元数据。一旦 manifest 改变了,Chrome 将会生成一个新的 APK。
注意:由于 manifest 的改变会重新生成 WebAPK,我们建议只在必要的情况下修改它。同时,不要用 manifest 储存任何跟用户有关的信息,或是其他需要经常变更的数据。因为频繁地修改 manifest 将会触发 Chrome 不断生成新的 WebAPK,从而导致安装时间的延长。
安卓 intent filters
当安装一个 PWA 到安卓系统上时,该应用将会为它所有的 URL 注册一系列 intent filters。当用户点击任何包括在这个 PWA 中的链接时,该应用将会以应用程序的形式被打开,而不是在浏览器中被打开。
让我们看看下面这个 <code>manifest.json 文件的片段,当它从程序启动器中被调用时,它将会以一个独立应用程序的形式启动 https://example.com/
,并且不需要任何浏览器。
“start_url”: “/”,
“display”: “standalone”,
一个 WebAPK 包括如下的 intent filters:
如果用户在某个应用程序中点击了一个跳转到 https://example.com/read
的链接,这一行为将会被 intent 捕捉到,并且在对应的 PWA 中打开该链接。
注意:从地址栏里直接跳转到
https://example.com/app/
和从带有该消息传递对象(intent)过滤器的原生应用里打开这个链接是一样的。Chrome 会认为用户是有意识地想要访问这个地址并且打开它。
使用 scope
限制 intent filters
如果你不想要你的 PWA 处理网站上所有的链接,你可以添加 scope
属性到 manifest 中。scope
属性会告诉安卓系统只在 URL 与 origin
和 scope
匹配时打开你的 PWA,并且规定哪些 URL 应该在 PWA 中被开打以及哪些 URL 应该在浏览器中被打开。当你的应用与其他非应用内容在同一个域名下时,scope
非常有帮助。
让我们看看下面这个 manifest.json
文件的片段,当它从程序启动器中被调用时,它将会以一个独立应用程序的形式启动 https://example.com/app/
,并且不需要任何浏览器。
“scope”: “/app/”,
“start_url”: “/”,
“display”: “standalone”,
和之前一样,生成的 WebAPK 将会包括 intent filters,但它会修改 APK 中 AndroidManifest.xml
里的 android:pathPrefix
属性:
让我们看几个简单的例子:
✅ https://example.com/app/
— 在/app/
路径下
✅ https://example.com/app/read/book
— 在 /app/
路径下
❌ https://example.com/help/
— 不在 /app/
路径下
❌ https://example.com/about/
— 不在 /app/
路径下
如果你不想设置 scope
属性,或者想知道如何定义 PWA 的 scope
,更多内容请参考 scope
。
权限管理
权限管理的运作和其他网络应用是一样的,它们需要在运行的时候请求而不是在安装的时候请求。理想的情况是只在你需要它们的时候请求。比如说,不要在一开始加载的时候就请求相机的权限,而是在用户准备拍照的时候再请求。
注意:通常情况下,安卓系统会马上授予刚安装的应用发送通知的权限,但这并不适用于通过 WebAPK 安装的应用。因此,你需要在运行的时候发起通知权限的请求。
管理储存空间和应用状态
虽然 PWA 是通过 APK 安装的,Chrome 会使用当前的配置文件存储数据,并且不会将它们隔离开。这为浏览器和应用程序之间交互提供了数据共享的体验。在这里,缓存是共享且活跃的,任何客户端的储存空间都是可以被访问的。与此同时,服务器端也是安装好并且随时可以运行的。
不过,这在用户清除他们的 Chrome 配置文件或者网站数据时会出现问题。
常见问题
如果用户已经安装了该网站的原生应用怎么办?
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
ttps://bbs.csdn.net/topics/618191877)
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。