12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import Vue from "vue";
- import { AES } from "./crypto";
- import { pick } from "lodash";
- import { DEVICE_ID, PLATFORM } from "@/constants/app";
- import { randomCode } from "./utils";
- export function getDownloadURLScheme(downloadSet = null, apiUrl = null) {
- let user = Vue.ls.get("user");
- const schoolId = Vue.ls.get("schoolId");
- const curSchoolInfo = user.schoolInfo.find((item) => item.id === schoolId);
- user.curSchoolInfo = curSchoolInfo;
- user = pick(user, [
- "id",
- "loginName",
- "realName",
- "sessionId",
- "accessToken",
- "orgInfo",
- "curSchoolInfo",
- ]);
- user.deviceId = DEVICE_ID;
- user.platform = PLATFORM;
- const key = AES(
- JSON.stringify({
- user,
- apiUrl: apiUrl || window.location.origin,
- downloadSet,
- actionSession: `${Date.now()}${randomCode()}`,
- })
- );
- return `trd://download?q=${key}`;
- }
- export function openApp(scheme, fallback, timeout = 2000) {
- let isPageHidden = false;
- const onVisibilityChange = () => {
- if (document.hidden) {
- isPageHidden = true;
- }
- };
- document.addEventListener("visibilitychange", onVisibilityChange);
- // 创建 iframe 来尝试调用 URL Scheme
- const iframe = document.createElement("iframe");
- iframe.style.display = "none";
- iframe.src = scheme;
- document.body.appendChild(iframe);
- setTimeout(() => {
- document.removeEventListener("visibilitychange", onVisibilityChange);
- document.body.removeChild(iframe);
- if (!isPageHidden) {
- // 如果页面未切换到后台,跳转到 fallback URL
- fallback && fallback();
- }
- }, timeout);
- }
|