no message

This commit is contained in:
hajimi
2026-06-11 12:15:29 +08:00
parent 10ebe39c30
commit 96efa1d905
5859 changed files with 815501 additions and 5 deletions
+586
View File
@@ -0,0 +1,586 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover"
/>
<meta name="theme-color" content="#1a1a2e" />
<title>世博头条 - iOS 安装教程</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
-webkit-tap-highlight-color: transparent;
}
html,
body {
font-family:
-apple-system, BlinkMacSystemFont, "PingFang SC", "Helvetica Neue",
"Microsoft YaHei", sans-serif;
color: #fff;
background: #0f0f23;
}
body {
min-height: 100vh;
background: linear-gradient(
160deg,
#1a1a2e 0%,
#16213e 50%,
#0f3460 100%
);
padding: 20px 20px 40px;
position: relative;
}
body::before {
content: "";
position: fixed;
top: -100px;
left: -100px;
width: 400px;
height: 400px;
background: radial-gradient(
circle,
rgba(73, 105, 255, 0.25) 0%,
transparent 70%
);
filter: blur(40px);
z-index: 0;
pointer-events: none;
}
.container {
position: relative;
z-index: 1;
max-width: 560px;
margin: 0 auto;
}
.back-bar {
display: flex;
align-items: center;
margin-bottom: 24px;
}
.back-btn {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 8px 14px;
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.15);
border-radius: 12px;
color: #fff;
text-decoration: none;
font-size: 14px;
cursor: pointer;
-webkit-appearance: none;
font-family: inherit;
}
.back-btn:active {
background: rgba(255, 255, 255, 0.12);
}
h1 {
font-size: 24px;
font-weight: 700;
margin-bottom: 8px;
}
.subtitle {
font-size: 14px;
color: rgba(255, 255, 255, 0.6);
margin-bottom: 20px;
}
.warning {
background: rgba(255, 200, 100, 0.1);
border: 1px solid rgba(255, 200, 100, 0.3);
border-radius: 14px;
padding: 14px 16px;
margin-bottom: 24px;
font-size: 13px;
line-height: 1.7;
color: rgba(255, 220, 150, 0.95);
}
.warning .title {
font-weight: 600;
color: #ffd070;
margin-bottom: 6px;
}
.download-card {
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.12);
border-radius: 16px;
padding: 18px;
margin-bottom: 28px;
}
.download-card .row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 8px 0;
}
.download-card .label {
font-size: 13px;
color: rgba(255, 255, 255, 0.6);
}
.download-card .value {
font-size: 14px;
color: #fff;
font-weight: 500;
text-align: right;
word-break: break-all;
}
.download-card .download-row {
margin-top: 10px;
padding-top: 14px;
border-top: 1px solid rgba(255, 255, 255, 0.08);
}
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
padding: 12px 20px;
border-radius: 12px;
font-size: 14px;
font-weight: 600;
text-decoration: none;
color: #fff;
cursor: pointer;
border: none;
-webkit-appearance: none;
font-family: inherit;
transition: all 0.2s ease;
}
.btn-primary {
background: linear-gradient(135deg, #4969ff 0%, #6b89ff 100%);
box-shadow: 0 6px 18px rgba(73, 105, 255, 0.35);
}
.btn-primary:active {
transform: scale(0.98);
}
.btn-ghost {
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.15);
}
.step-list {
display: flex;
flex-direction: column;
gap: 14px;
}
.step {
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 16px;
padding: 18px 18px 18px 60px;
position: relative;
}
.step .num {
position: absolute;
left: 18px;
top: 18px;
width: 30px;
height: 30px;
border-radius: 50%;
background: linear-gradient(135deg, #4969ff 0%, #ff49ad 100%);
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 14px;
}
.step .step-title {
font-size: 15px;
font-weight: 600;
margin-bottom: 8px;
color: #fff;
}
.step .step-desc {
font-size: 13px;
line-height: 1.7;
color: rgba(255, 255, 255, 0.7);
}
.step .step-desc a {
color: #6b89ff;
text-decoration: underline;
}
.step .step-desc strong {
color: #fff;
}
.step .step-desc code {
background: rgba(255, 255, 255, 0.1);
padding: 2px 6px;
border-radius: 4px;
font-size: 12px;
font-family: ui-monospace, "SF Mono", Consolas, monospace;
}
.step ul {
margin-left: 18px;
margin-top: 6px;
}
.step ul li {
margin-bottom: 4px;
}
.toggle-tabs {
display: flex;
gap: 8px;
margin-bottom: 16px;
background: rgba(255, 255, 255, 0.06);
border-radius: 12px;
padding: 4px;
}
.toggle-tab {
flex: 1;
padding: 10px;
text-align: center;
border-radius: 8px;
font-size: 13px;
font-weight: 500;
cursor: pointer;
color: rgba(255, 255, 255, 0.6);
transition: all 0.2s ease;
}
.toggle-tab.active {
background: rgba(255, 255, 255, 0.12);
color: #fff;
}
.platform-content {
display: none;
}
.platform-content.active {
display: block;
}
.footer-tip {
margin-top: 28px;
padding: 16px;
background: rgba(255, 100, 100, 0.06);
border: 1px solid rgba(255, 100, 100, 0.2);
border-radius: 14px;
font-size: 12px;
line-height: 1.7;
color: rgba(255, 180, 180, 0.9);
}
h2 {
font-size: 16px;
font-weight: 600;
margin: 24px 0 12px;
color: rgba(255, 255, 255, 0.9);
}
</style>
</head>
<body>
<div class="container">
<div class="back-bar">
<a href="./" class="back-btn"> 返回下载页</a>
</div>
<h1>🍎 iOS 安装教程</h1>
<p class="subtitle">由于尚未上架 App Store,需通过自签方式安装</p>
<div class="warning">
<div class="title">⚠️ 重要提示(请先阅读)</div>
• 自签安装的 App **每 7 天会过期**,过期后需重新签名安装<br />
• 安装过程需要一台<strong>电脑(Mac 或 Windows+ USB 数据线</strong
><br />
• 你需要使用<strong>自己的 Apple ID</strong> 登录签名工具<br />
• 嫌麻烦可以直接用<a
href="javascript:void(0)"
id="goH5"
style="color: #ffd070; text-decoration: underline"
>网页版</a
>
</div>
<div class="download-card" id="versionCard">
<div class="row">
<span class="label">版本号</span>
<span class="value" id="versionName">加载中...</span>
</div>
<div class="row">
<span class="label">发布日期</span>
<span class="value" id="releaseDate">-</span>
</div>
<div class="row download-row">
<button class="btn btn-primary" id="downloadIpa" style="width: 100%">
📥 下载 IPA 安装包
</button>
</div>
</div>
<h2>选择你的电脑系统</h2>
<div class="toggle-tabs">
<div class="toggle-tab active" data-platform="windows">🪟 Windows</div>
<div class="toggle-tab" data-platform="mac">💻 Mac</div>
</div>
<!-- Windows 教程 -->
<div class="platform-content active" data-platform="windows">
<div class="step-list">
<div class="step">
<div class="num">1</div>
<div class="step-title">下载安装 Sideloadly</div>
<div class="step-desc">
在电脑上访问
<a href="https://sideloadly.io/" target="_blank">sideloadly.io</a>
,下载并安装 SideloadlyWindows 版)。
</div>
</div>
<div class="step">
<div class="num">2</div>
<div class="step-title">连接 iPhone 到电脑</div>
<div class="step-desc">
使用 USB 数据线连接 iPhone,首次连接需要在 iPhone
上点击<strong>"信任此电脑"</strong>
</div>
</div>
<div class="step">
<div class="num">3</div>
<div class="step-title">下载 IPA 文件到电脑</div>
<div class="step-desc">
将上方的 IPA 文件下载到电脑(注意:要在电脑上下载,不是手机上)。
</div>
</div>
<div class="step">
<div class="num">4</div>
<div class="step-title">打开 Sideloadly 拖入 IPA</div>
<div class="step-desc">
打开 Sideloadly,把刚才下载的 IPA
文件<strong>拖到主界面</strong>
</div>
</div>
<div class="step">
<div class="num">5</div>
<div class="step-title">输入 Apple ID 开始签名</div>
<div class="step-desc">
在 Apple ID 输入框中输入你的 Apple ID 邮箱,点击
<strong>Start</strong> 按钮, 弹出密码框时输入 Apple ID
密码(建议提前在
<a href="https://appleid.apple.com/" target="_blank"
>appleid.apple.com</a
>
生成<strong>专用密码</strong>)。
</div>
</div>
<div class="step">
<div class="num">6</div>
<div class="step-title">在 iPhone 上信任开发者</div>
<div class="step-desc">
签名安装完成后,打开 iPhone:<br />
<code>设置 → 通用 → VPN与设备管理</code><br />
找到你的 Apple ID 邮箱,点击进入 → 点<strong>"信任"</strong>
</div>
</div>
<div class="step">
<div class="num">7</div>
<div class="step-title">打开 App 使用</div>
<div class="step-desc">
现在可以打开 App 正常使用了。<strong>7 天后 App 会失效</strong
>,需要重新执行步骤 4-6。
</div>
</div>
</div>
</div>
<!-- Mac 教程 -->
<div class="platform-content" data-platform="mac">
<div class="step-list">
<div class="step">
<div class="num">1</div>
<div class="step-title">安装 Sideloadly 或 AltStore</div>
<div class="step-desc">
推荐
<a href="https://sideloadly.io/" target="_blank">Sideloadly</a>
<a href="https://altstore.io/" target="_blank">AltStore</a>。 Mac
用户也可以直接用 Xcode 来签名(需要登录 Apple ID)。
</div>
</div>
<div class="step">
<div class="num">2</div>
<div class="step-title">连接 iPhone</div>
<div class="step-desc">
USB 连接 iPhoneiPhone 上点<strong>"信任此电脑"</strong>
</div>
</div>
<div class="step">
<div class="num">3</div>
<div class="step-title">下载并拖入 IPA</div>
<div class="step-desc">
下载 IPA 到 Mac,打开 Sideloadly 拖入 IPA 文件。
</div>
</div>
<div class="step">
<div class="num">4</div>
<div class="step-title">输入 Apple ID 签名</div>
<div class="step-desc">
登录你的 Apple ID 后点 Start,等待签名安装完成。
</div>
</div>
<div class="step">
<div class="num">5</div>
<div class="step-title">iPhone 上信任开发者</div>
<div class="step-desc">
<code>设置 → 通用 → VPN与设备管理</code><br />
找到你的 Apple ID → 点<strong>"信任"</strong>
</div>
</div>
<div class="step">
<div class="num">6</div>
<div class="step-title">完成</div>
<div class="step-desc">
正常打开 App 即可使用。<strong>每 7 天需要重新签名一次</strong>
</div>
</div>
</div>
</div>
<div class="footer-tip">
🤔 <strong>不想这么麻烦?</strong><br />
• 直接用<a
href="javascript:void(0)"
id="goH5Bottom"
style="color: #ffb0b0; text-decoration: underline"
>网页版</a
>,无需安装<br />
• 等 App 上架 App Store 后即可一键下载(无需自签)
</div>
</div>
<script>
const CONFIG = {
apiBase: "",
h5Url: "",
appName: "世博头条",
};
// 从接口拉取站点配置
async function loadSiteConfig() {
try {
const res = await fetch(`${CONFIG.apiBase}/api/index/config`);
const json = await res.json();
if (json.code !== 1) return;
const data = json.data || {};
if (data.website?.shop_name) {
CONFIG.appName = data.website.shop_name;
document.title = `${CONFIG.appName} - iOS 安装教程`;
}
if (data.webPage?.page_url) {
CONFIG.h5Url = data.webPage.page_url;
}
} catch (e) {
console.warn("加载站点配置失败:", e);
}
}
loadSiteConfig();
// 平台切换
document.querySelectorAll(".toggle-tab").forEach((tab) => {
tab.addEventListener("click", () => {
const platform = tab.dataset.platform;
document
.querySelectorAll(".toggle-tab")
.forEach((t) =>
t.classList.toggle("active", t.dataset.platform === platform),
);
document
.querySelectorAll(".platform-content")
.forEach((c) =>
c.classList.toggle("active", c.dataset.platform === platform),
);
});
});
// 跳 H5
const goH5 = () => {
if (!CONFIG.h5Url) {
alert("正在加载配置,请稍后重试");
return;
}
location.href = CONFIG.h5Url;
};
document.getElementById("goH5").onclick = goH5;
document.getElementById("goH5Bottom").onclick = goH5;
// 拉版本信息
async function loadIosVersion() {
try {
const res = await fetch(`${CONFIG.apiBase}/api/appVersion/latest`);
const json = await res.json();
if (json.code !== 1) throw new Error(json.msg || "请求失败");
const ios = json.data?.ios;
if (ios && ios.download_url) {
document.getElementById("versionName").textContent =
`v${ios.version_name}`;
if (ios.create_time) {
document.getElementById("releaseDate").textContent =
ios.create_time.split(" ")[0];
}
document.getElementById("downloadIpa").onclick = () => {
window.location.href = ios.download_url;
};
} else {
document.getElementById("versionName").textContent =
"暂无 iOS 版本";
const btn = document.getElementById("downloadIpa");
btn.textContent = "暂无可下载的 IPA";
btn.disabled = true;
btn.style.opacity = "0.5";
btn.style.cursor = "not-allowed";
}
} catch (e) {
console.error("获取版本信息失败:", e);
document.getElementById("versionName").textContent = "加载失败";
}
}
loadIosVersion();
</script>
</body>
</html>