改为固定接口获取ios下载
This commit is contained in:
+31
-35
@@ -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 默认按 UA;PC 端弹窗里的 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))
|
||||
|
||||
Reference in New Issue
Block a user