[译] 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 与 originscope 匹配时打开你的 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前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

ttps://bbs.csdn.net/topics/618191877)

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。