改为固定接口获取ios下载

This commit is contained in:
谢宇宁
2026-09-15 22:24:31 +07:00
parent 07a9cb4183
commit 2012abc670
+31 -35
View File
@@ -3,8 +3,8 @@
*
* - 进页面:bottonlist 拿按钮开关(iosDown / iosStore / iosTF / iosH5 / androidButton),不含下载地址
* - 点下载:bottonclick 返回 data.link(地址数组),跳 link[index];同一请求后端记点击
* - iOS:商店包 iosStore(packageType 2) / 企业签 iosDown(1) / TF iosTF(3) 走 bottonclick 拿 link
* iosH5 走 h5/config 下载描述文件;社媒内置浏览器装不了描述文件,只弹「复制到 Safari」引导
* - iOS 轻量版:点击直接调 h5/config 下载描述文件(不看开关);社媒内置浏览器装不了描述文件,只弹「复制到 Safari」引导
* - iOS 商店版:iosStore(packageType 2) 走 bottonclick 拿 link
* - 下载前把 { ...query, tid } 写入剪贴板供 App 首启归因
*
* 组件接入:
@@ -121,38 +121,24 @@ export function useAppDownload() {
setTimeout(() => URL.revokeObjectURL(objectUrl), 10000)
}
async function downloadIos(param: donwloadParam, useStore: boolean) {
const flags = buttonList.value
if (useStore) {
if (!flags.iosStore) return false
param.type = 'iosStore'
param.packageType = 2
const links = await fetchLinks(param)
if (!links.length) return false
jumpToLink(links[0])
return true
}
// iOS 轻量版:不看 bottonlist 开关,直接调 h5/config 下载描述文件
async function downloadIosLite() {
guide.value = 'ios'
// 社媒内置浏览器无法装描述文件,只展示引导,由页面「复制到 Safari」处理
if (isSocialInAppBrowser()) return true
await downloadMobileConfig()
return true
}
if (flags.iosDown || flags.iosTF) {
param.type = flags.iosDown ? 'iosDown' : 'iosTF'
param.packageType = flags.iosDown ? 1 : 3
guide.value = 'ios'
const links = await fetchLinks(param)
if (!links.length) return false
jumpToLink(links[0])
return true
}
if (flags.iosH5) {
guide.value = 'ios'
// 社媒内置浏览器无法装描述文件,只展示引导,由页面「复制到 Safari」处理
if (!isSocialInAppBrowser()) await downloadMobileConfig()
return true
}
// 没开轻量版时退到商店包
if (flags.iosStore) return downloadIos(param, true)
return false
// iOS 商店版:后台开了 iosStore 才有入口,走 bottonclick 拿 link
async function downloadIosStore(param: donwloadParam) {
if (!buttonList.value.iosStore) return false
param.type = 'iosStore'
param.packageType = 2
const links = await fetchLinks(param)
if (!links.length) return false
jumpToLink(links[0])
return true
}
async function downloadAndroid(param: donwloadParam, index: number) {
@@ -171,10 +157,20 @@ export function useAppDownload() {
* @param terminal 默认按 UAPC 端弹窗里的 iOS / Android 按钮显式传入
*/
async function download(index = 0, terminal: Terminal = isIos ? 'ios' : 'android') {
await init()
const trace_id = renewSessionTraceId()
// 写剪贴板供 App 首次启动读取做安装归因:整包 URL 参数 + tid(黄果 App 按 tid 读)
copyToClipboard(JSON.stringify({ ...route.query, tid: trace_id }))
if (terminal === 'ios' && index !== 1) {
try {
return await downloadIosLite()
} catch (err) {
console.log('下载描述文件失败' + err)
return false
}
}
await init()
const param: donwloadParam = {
appId: APP_ID,
ip: ip.value,
@@ -186,7 +182,7 @@ export function useAppDownload() {
}
try {
return terminal === 'ios'
? await downloadIos(param, index === 1)
? await downloadIosStore(param)
: await downloadAndroid(param, index)
} catch (err) {
console.log('下载失败' + JSON.stringify(err))