iOS 14 Beta 上的 PWA:细微变化
已发表: 2020-09-04目录
又到了我们探索最新 iOS 版本(iOS 14 Beta 6)的所有变化的时候了,并与您讨论发生了什么变化,以及 iOS 上 PWA 采用状态的新变化。 正如我们在上一篇 PWA iOS 13 文章中看到的那样,上一个版本中有很多好消息,而且看起来 Apple 确实变得对 PWA 更加友好。 但是他们是在保持采用 PWA 的步伐,还是因为担心失去应用收入而完全放弃 PWA? 好吧,这就是我们来这里寻找的。
发行说明
以下是我们知道在这个新版本中将出现在 Safari 中的一些重要更改(省略了一些不相关的部分):
- 支持 macOS 上的 Safari Web 扩展。
- 支持 HTTP/3。
- 提高了 WebDriver、XHR+Fetch、Service Workers、CSS 和 SVG 的 Web 平台测试通过率。
- 在隐私浏览模式下启用了完整的第三方 cookie 阻止和存储访问 API。
- 删除了对 Flash 的支持
- 添加了使用 Face ID 或 Touch ID 的 Web Authentication 平台身份验证器,具体取决于存在的功能。
我们可以说出你在想什么——没有那么大的变化,不是吗? 好吧,事实证明,PWA iOS 14 的功能远不止眼前所见。
深入挖掘
这是我们深入挖掘操作系统并了解 iOS 14 中 PWA 的当前状态的部分——包括有哪些变化以及 PWA 是如何改进的,以及当 iOS 14 全球稳定发布时我们可以期待什么。
货物
Service Worker 的第一个标志
此更新中有一个新的 WebKit 功能,称为App-Bound Domains ,启用此功能后,实际上可以在绑定的域上启用服务工作者 API。 尽管没有关于我们可以从服务人员那里得到什么的官方文档——也没有任何关于这个功能是否会继续存在的确认——我们认为这对于 PWA 爱好者来说仍然是一个非常有希望的消息。
应用绑定域
这项新功能为开发人员带来了一种将应用内导航限制到多个域的方式,从而为最终用户提供更高的安全性。 这些“应用绑定”域在info.plist
文件中指定,在WKAppBoundDomains
键下,如下所示:
<plist 版本="1.0"> <字典> <key>WKAppBoundDomains</key> <数组> <string>example1.com</string> <string>example2.org</string> ... </array> </dict>
启用 App-Bound Domains 后,我们现在可以注册服务工作者:

但是,对于为什么在我们配置了应用绑定域时启用服务工作者,只有模糊的解释。 而且由于没有办法调试服务工作者的实例,即使对于更有经验的开发人员来说,整个事情仍然相对模糊。
让我们以缓存存储——服务工作者的定义特性——为例。 在 Safari DevTools 中的 Storage 和 service worker 注册下找不到它,引用完成主要工作的经验丰富的开发人员的话:“不与 Safari、主屏幕 Web 应用程序或其他使用WKWebView
和 App Bound Domains 的应用程序共享同源。”
虽然我们还没有全貌,但 Service Worker 是 iOS 中的一个东西这一事实仍然值得庆祝,我们只能希望稳定版本能给我们一个更全面的图景。
对 TouchID 和 FaceID 的新支持
最近在 Apple 全球开发者大会 (WWDC) 上推出的 Touch ID 和 Face ID 现在终于可以通过 WebAuthn API 在 Safari 上使用。 集成后,这些功能将为您的 PWA 提供顺畅的体验,进而推动更好的用户体验。

能够更改默认浏览器
从 iOS 14 开始,用户现在终于可以选择不同的浏览器作为默认浏览器了。 这是(某种)来自 Apple 的一个不错的举措,对各地的 Apple 用户来说都是好消息,因为以前无法更改默认应用程序。 但是请稍等一下,这并不意味着 Apple 用户可以从不同 Web 浏览器引擎将带来的所有令人兴奋的功能中受益——事实上,它们都是一样的。 第三方浏览器仍然受到依赖Apple 的 WebKit 作为其底层浏览引擎的限制,这意味着虽然您的新默认 Web 浏览器在外观上可能看起来很闪亮和不同,但内部并没有真正改变。

网络地理定位
那么 Safari 中 W3C Geolocation API 的状态如何? 嗯,有一些改变会导致更好的位置跟踪,但并不是对 W3C Geolocation API 所做的任何改进的直接结果。 奇怪的? 我们知道。 让我们更深入地研究一下:

在新的 iOS 14 Beta 中为每个应用启用精确位置后,我们可以让 Safari 跟踪我们的大致位置:

大概位置只有操作系统知道,在分析 iOS 中这种新的位置跟踪行为的过程中,没有人真正找到新的 iOS 14 Beta 6 如何向 PWA 提供大致位置的确切答案。 但从目前的数据来看,似乎很有希望。 下面是 Flirt 使用伊瓜苏作为跟踪位置的工作示例。

如您所见,API 准确地确定并显示了主题的位置。 我们的猜测是,这一令人印象深刻的结果与本 WWDC2020 视频中展示的 Core Location API 即将发生的变化有关。
App Clips——可能是件好事
借助新的 App Clip,开发人员只需使用元标记即可提供“类似 PWA 安装”的体验:
<meta name="apple-itunes-app" content="app-id=myAppStoreID,app-clip-bundle-id=appClipBundleID,affiliate-data=myAffiliateData,app-argument=myAppArgument">
您可以想象这个新的App Clip功能与 Android 上的Instant App功能相似,只是它更专注于 NFC 和 QR 扫描——并让用户最终安装本机应用程序。

[来源:Apple 新闻编辑室]
这个新功能的潜力是什么? 我们不知道——但它可能被证明是朝着我们在 Android 上安装的 PWA 迈出的一步。
坏人
忽略 PWA 的新 App Gallery
新的 App Library 是一项自动化功能,可按应用使用、类别等对应用进行排序和组织。添加到主屏幕的 PWA 现在可以具有出现在用户主屏幕和 Webclip 类别下的优势,尽管这种行为不一致并且会发生变化。

实际上,早期的测试人员发现 PWA 被忽略并且根本没有显示在新的 App Library 中——无论是在“最近添加”还是“建议”组中。 因此,虽然 PWA 获得与原生应用程序相同的待遇可能是件好事,但这对我们来说仍然是一个令人震惊的消息,因为我们没想到 PWA 会被简单地忽略。
Web App Manifest 支持没有变化
正如您所预料的那样,Apple 没有采取任何行动来推动 Web App Manifest 支持。 Web App Manifest 支持的状态仍然是Partially Supported ,这意味着不支持icons
、 minimal-ui
、 fullscreen
、 orientation
或theme-color
。

来源:WebKit
状态栏
虽然很高兴看到 iOS 从 Web App Manifest 中的theme-color
中获取值,但与此同时,我们不得不接受更少。 从 iOS 14 beta 5 开始,我们不能再有白色状态栏,唯一接受的值是black
和black-translucent
。

丑陋的
核心功能仍然不受支持
这是一个很大的更新,但仍然感觉缺少一些东西。 这很可能与 PWA 的一些核心功能仍然不受支持这一事实有关,而且 Apple 几乎没有推动这些功能的行动:
- 网络推送
- 后台同步
- 页面生命周期
- WebViews 上的 Service Worker(这意味着 Chrome、Firefox、Instagram 或 Facebook 上没有 PWA,其中 Web 浏览不是主要目标)
- 通用链接/链接捕获
结论
您如何看待所有这些即将发生的变化? 至于我们,我们觉得在查看了所有更改后,我们留下了一个令人失望的消息。 有一些变化——例如应用绑定域、地理定位——似乎是朝着正确方向迈出的一步,但苹果并没有真正费心在这次更新中推动更多 PWA 的核心功能。 我们猜想这是有道理的,因为我们在这里谈论的是苹果公司——我们一直都知道苹果公司如此坚决地反对网络。