迁移已安装 Web 应用的来源

Web 功能: Web 应用源迁移

将已安装的 Web 应用 (PWA) 转移到新源通常需要用户手动卸载旧应用并重新安装新应用。此过程通常会导致操作系统级集成(例如任务栏快捷方式和通知权限)丢失。Web 应用源迁移功能通过在旧源和新源之间建立安全交接,实现此过渡的自动化。

迁移是一个两步验证流程:新版协作平台网站声明旧网站是其前身,旧网站授权新版协作平台网站作为其继任者。

重要限制

实现步骤

1. 验证“同站”状态

强制性要求:新旧源站必须是“同站”。它们必须共用同一个可注册网域 (eTLD+1)。

  • 允许:从 app.example.com 迁移到 new.example.com(两者共享 example.com)。
  • 允许:从 example.com/app1 迁移到 example.com/app2。
  • 禁止:从 example.com 迁移到 example.org(不同的可注册网域)。

2. 配置新应用

新应用必须声明其前身。新应用必须具有 id。

在新网站的 manifest.json 中,添加 migrate_from 字段:

{
  "name": "My New App",
  "id": "/demo.html",
  "start_url": "/demo.html",
  "migrate_from": [
    {
      "id": "https://old-app.example.com/"
    }
  ]
}

3. 在旧源设备上授权迁移

旧源必须明确授权迁移,以防止源劫持。创建一个从 .well-known 目录传送的配置文件。

文件位置:https://old-app.example.com/.well-known/web-app-origin-association

{
  "https://new-app.example.com": {
    "allow_migration": true
  }
}

4. 主动发出迁移信号(可选)

如需立即为现有用户触发迁移,而无需等待他们访问新版协作平台网站,请使用 migrate_to 提示更新旧网站的清单。

{
  "migrate_to": [
    {
      "id": "https://new-app.example.com/",
      "install_url": "https://new-app.example.com/demo.html"
    }
  ]
}

5. 要求用户迁移(可选)

默认情况下,系统会向用户建议迁移。如需强制执行过渡,请在新应用的清单中将 behavior 设置为 force。

{
  "migrate_from": [
    {
      "id": "https://old-app.example.com/",
      "behavior": "force"
    }
  ]
}

注意:behavior: "force" 不会静默删除旧应用。浏览器会向用户显示一个对话框,要求他们更新到新版本或完全移除该应用。

后备和浏览器支持

手动重新安装提示

对于不支持自动迁移的浏览器,用户将继续使用旧版安装。您应在旧源上实现一个界面元素(例如通知横幅),将用户引导至新版协作平台网站。

用户的设置不会迁移,旧应用也不会自动卸载。