index.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { Capacitor } from "@capacitor/core";
  2. import { CapacitorUpdater } from "@capgo/capacitor-updater";
  3. import { App } from "@capacitor/app";
  4. import semver from "semver";
  5. import { showDialog } from "vant";
  6. const HOST = "https://nim.angeltokens.io/updates/down/";
  7. const UPDATE_URL = HOST + "update.json";
  8. // 检查并更新: shasum -a 256
  9. export async function checkAndUpdate() {
  10. console.log("检测更新");
  11. // 判断是web 还是 ios
  12. if (Capacitor.getPlatform() === "web") {
  13. console.log("web 端不支持更新");
  14. return;
  15. }
  16. CapacitorUpdater.notifyAppReady();
  17. checkForUpgrade();
  18. }
  19. // 更新
  20. const checkForUpgrade = async () => {
  21. // 1. 拉取元数据
  22. console.log("拉取元数据");
  23. const meta = await fetch(UPDATE_URL).then((r) => r.json());
  24. console.log("更新", meta);
  25. const current = await CapacitorUpdater.current();
  26. const { version } = await App.getInfo();
  27. console.log("版本:", current.bundle.version, meta.version);
  28. if (!current.bundle.version) {
  29. console.log("无新版本!");
  30. return;
  31. }
  32. if (
  33. current.bundle.version != "builtin" &&
  34. semver.gte(current.bundle.version, meta.version)
  35. ) {
  36. console.log("无新版本");
  37. return;
  38. }
  39. if (version && semver.lt(version, meta.minBinaryVersion)) {
  40. console.log("壳子太旧");
  41. return;
  42. }
  43. try {
  44. console.log("下载地址:", `${HOST}v${meta.version}.zip`);
  45. const update = await CapacitorUpdater.download({
  46. url: `${HOST}v${meta.version}.zip`,
  47. version: meta.version,
  48. checksum: meta.checksum,
  49. });
  50. // 成功
  51. console.log("✅ 下载成功", update);
  52. // 通知
  53. if (meta.mandatory) {
  54. showDialog({
  55. title: `v ${meta.version} 已發布`,
  56. confirmButtonText: "立即體驗",
  57. message: meta.upDataDescription,
  58. }).then(async () => {
  59. await CapacitorUpdater.set(update); // 设置新版本
  60. });
  61. }else{
  62. await CapacitorUpdater.set(update); // 设置新版本
  63. }
  64. } catch (err) {
  65. console.error("❌ 下载失败", err.message || err);
  66. }
  67. };