splashscreen.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.getSplashscreen = exports.initSplashscreen = void 0;
  4. const shared_1 = require("@vue/shared");
  5. function initSplashscreen(manifestJson, userManifestJson) {
  6. if (!manifestJson.plus.splashscreen) {
  7. return;
  8. }
  9. // 强制白屏检测
  10. const splashscreenOptions = userManifestJson['app-plus'] && userManifestJson['app-plus'].splashscreen;
  11. const hasAlwaysShowBeforeRender = splashscreenOptions && (0, shared_1.hasOwn)(splashscreenOptions, 'alwaysShowBeforeRender');
  12. if (!hasAlwaysShowBeforeRender &&
  13. manifestJson.plus.splashscreen.autoclose === false) {
  14. // 兼容旧版本仅配置了 autoclose 为 false
  15. manifestJson.plus.splashscreen.alwaysShowBeforeRender = false;
  16. }
  17. if (manifestJson.plus.splashscreen.alwaysShowBeforeRender) {
  18. // 白屏检测
  19. if (!manifestJson.plus.splashscreen.target) {
  20. manifestJson.plus.splashscreen.target = 'id:1';
  21. }
  22. manifestJson.plus.splashscreen.autoclose = true;
  23. manifestJson.plus.splashscreen.delay = 0;
  24. }
  25. else {
  26. // 不启用白屏检测
  27. delete manifestJson.plus.splashscreen.target;
  28. if (manifestJson.plus.splashscreen.autoclose) {
  29. // 启用 uni-app 框架关闭 splash
  30. manifestJson.plus.splashscreen.autoclose = false; // 原 5+ autoclose 改为 false
  31. }
  32. }
  33. delete manifestJson.plus.splashscreen.alwaysShowBeforeRender;
  34. }
  35. exports.initSplashscreen = initSplashscreen;
  36. function getSplashscreen(manifestJson) {
  37. const splashscreenOptions = manifestJson['app-plus']?.splashscreen || {};
  38. return {
  39. autoclose: splashscreenOptions.autoclose !== false,
  40. alwaysShowBeforeRender: splashscreenOptions.alwaysShowBeforeRender !== false,
  41. };
  42. }
  43. exports.getSplashscreen = getSplashscreen;