现在,火狐和谷歌浏览器都开始支持使用应用程序清单和服务工作者的渐进式Web应用程序。
那么,在编写清单时需要记住哪些关键差异呢?(或者同一个清单文件可以在两种浏览器上使用)。
如果这是一个托管的Web应用程序(而不是打包的应用程序),那么在使用户安装它的过程中有哪些差异呢?
现在,火狐和谷歌浏览器都开始支持使用应用程序清单和服务工作者的渐进式Web应用程序。
那么,在编写清单时需要记住哪些关键差异呢?(或者同一个清单文件可以在两种浏览器上使用)。
如果这是一个托管的Web应用程序(而不是打包的应用程序),那么在使用户安装它的过程中有哪些差异呢?
这个问题涉及到很多内容。我会提供一些历史背景,并回答一些可能的问题。
背景
打包应用
Chrome、Firefox、Opera等平台曾经推出过“打包”应用程序平台,它们运行HTML/JS/CSS内容,但不在网络上。通常使用某种清单文件与类似zip的打包和目录结构(有时还需要签名)来分发应用程序。这些应用程序通常不参与同源策略,也不像网络内容那样受到相同的限制和能力;通常通过专有商店提供服务,具备尚未提供给“普通老式网络内容”的功能和API。
这些应用程序的清单格式——至少在Chrome Packaged Apps和Firefox Packaged Apps中——是一个JSON文件,其内容和选项没有标准化。
托管应用
一些系统将其专有的打包应用程序系统提供的额外功能与“真正”的基于Web的应用程序托管相融合,创建了“托管应用程序”。这些应用程序有很多种类,但简而言之,它们也倾向于具有基于JSON的专有清单文件。例如,参见Chrome Hosted Apps、Firefox Hosted Apps和Windows 10 Hosted Apps的文档。这里有两个因素:Legacy(传统)和Future(未来)。
Legacy部分(用此短语并不妥当)是旧式打包系统(虽然它们仍然有效)。Mozilla和Chrome都有自己的打包格式和类似的JSON清单。我个人建议避开它们,专注于未来。
面向未来的系统是Web App Manifest,它得到了Chrome的支持,并在Android上的安装体验中使用。它还受到Opera和Firefox OS的支持。您编写的清单应该适用于所有平台。显然,每个实现处于不同的阶段,例如:
chrome_related_applications
和prefer_related_applications
background_color
和theme_color
以生成闪屏splash_screens
对象来创建闪屏。scope
,告诉浏览器哪些url路径被视为应用程序的一部分。 Chrome和Opera忽略此项。