提交 856c93a3 编写于 作者: D DCloud_LXH

feat(升级中心): 升级至 0.9.0 使用 dialogPage 实现需要 HBuilderX 4.31

上级 ed0c0dca
...@@ -1233,6 +1233,15 @@ ...@@ -1233,6 +1233,15 @@
} }
}, },
// #endif // #endif
// #ifdef APP-ANDROID || APP-IOS
{
"path" : "uni_modules/uni-upgrade-center-app/pages/uni-app-x/upgrade-popup",
"style" :
{
"navigationBarTitleText" : ""
}
},
// #endif
{ {
"path": "pages/tabBar/CSS", "path": "pages/tabBar/CSS",
"style": { "style": {
......
...@@ -39,10 +39,6 @@ ...@@ -39,10 +39,6 @@
</template> </template>
</uni-collapse-item> </uni-collapse-item>
</uni-collapse> </uni-collapse>
<!-- #ifdef UNI-APP-X && APP -->
<uni-upgrade-center-app ref="upgradePopup" @show="upgradePopupShow" @close="upgradePopupClose" />
<!-- #endif -->
</view> </view>
<!-- #ifdef APP --> <!-- #ifdef APP -->
</scroll-view> </scroll-view>
...@@ -80,19 +76,7 @@ ...@@ -80,19 +76,7 @@
} else { } else {
uni.navigateTo({ url }) uni.navigateTo({ url })
} }
},
// #ifdef UNI-APP-X && APP
upgradePopupShow() {
console.log('upgradePopup show');
if (!this.pageHiden) {
uni.hideTabBar()?.catch(_ => { })
}
}
, upgradePopupClose() {
console.log('upgradePopup close');
uni.showTabBar()?.catch(_ => { })
} }
// #endif
}, },
// #ifdef WEB // #ifdef WEB
watch: { watch: {
...@@ -118,11 +102,11 @@ ...@@ -118,11 +102,11 @@
if (res.needAuthorization) { if (res.needAuthorization) {
uni.onPrivacyAuthorizationChange((res) => { uni.onPrivacyAuthorizationChange((res) => {
if (!res.needAuthorization) { if (!res.needAuthorization) {
checkUpdate(this.$refs['upgradePopup'] as UniUpgradeCenterAppComponentPublicInstance) checkUpdate()
} }
}) })
} else { } else {
checkUpdate(this.$refs['upgradePopup'] as UniUpgradeCenterAppComponentPublicInstance) checkUpdate()
} }
} }
}) })
......
## 0.9.0(2024-10-30)
- **重要更新** 在 uni-app x 项目中弃用之前弹窗方案使用[dialogPage](https://doc.dcloud.net.cn/uni-app-x/api/dialog-page.html)实现,需要 `HBuilderX 4.31+`
## 0.8.5(2024-10-26) ## 0.8.5(2024-10-26)
- 优化 去除不必要代码 - 优化 去除不必要代码
## 0.8.4(2024-10-26) ## 0.8.4(2024-10-26)
......
{ {
"id": "uni-upgrade-center-app", "id": "uni-upgrade-center-app",
"displayName": "升级中心 uni-upgrade-center - App", "displayName": "升级中心 uni-upgrade-center - App",
"version": "0.8.5", "version": "0.9.0",
"description": "uni升级中心 - 客户端检查更新", "description": "uni升级中心 - 客户端检查更新",
"keywords": [ "keywords": [
"uniCloud", "uniCloud",
......
...@@ -26,7 +26,7 @@ export type UniUpgradeCenterResult = { ...@@ -26,7 +26,7 @@ export type UniUpgradeCenterResult = {
type : string // "native_app" | "wgt" type : string // "native_app" | "wgt"
store_list : StoreListItem[] | null store_list : StoreListItem[] | null
min_uni_version : string | null // 升级 wgt 的最低 uni-app 版本 min_uni_version : string | null // 升级 wgt 的最低 uni-app 版本
} }
export default function () : Promise<UniUpgradeCenterResult> { export default function () : Promise<UniUpgradeCenterResult> {
...@@ -80,20 +80,20 @@ export default function () : Promise<UniUpgradeCenterResult> { ...@@ -80,20 +80,20 @@ export default function () : Promise<UniUpgradeCenterResult> {
const code = res.result['code'] const code = res.result['code']
const codeIsNumber = ['Int', 'Long', 'number'].includes(typeof code) const codeIsNumber = ['Int', 'Long', 'number'].includes(typeof code)
if (codeIsNumber) { if (codeIsNumber) {
if ((code as number) == 0) { if ((code as number) == 0) {
reject({ reject({
code: res.result['code'], code: res.result['code'],
message: res.result['message'] message: res.result['message']
}) })
} else if ((code as number) < 0) { } else if ((code as number) < 0) {
reject({ reject({
code: res.result['code'], code: res.result['code'],
message: res.result['message'] message: res.result['message']
}) })
} else { } else {
const result = JSON.parse<UniUpgradeCenterResult>(JSON.stringify(res.result)) as UniUpgradeCenterResult const result = JSON.parse<UniUpgradeCenterResult>(JSON.stringify(res.result)) as UniUpgradeCenterResult
resolve(result) resolve(result)
} }
} }
}).catch<void>((err : any | null) => { }).catch<void>((err : any | null) => {
const error = err as UniCloudError const error = err as UniCloudError
......
...@@ -6,13 +6,7 @@ import { openSchema } from '@/uni_modules/uts-openSchema' ...@@ -6,13 +6,7 @@ import { openSchema } from '@/uni_modules/uts-openSchema'
// 推荐再App.vue中使用 // 推荐再App.vue中使用
const PACKAGE_INFO_KEY = '__package_info__' const PACKAGE_INFO_KEY = '__package_info__'
// uni-app 项目无法从 vue 中导出 ComponentPublicInstance 类型,故使用条件编译
// #ifdef UNI-APP-X
export default function (component : ComponentPublicInstance | null = null) : Promise<UniUpgradeCenterResult> {
// #endif
// #ifndef UNI-APP-X
export default function () : Promise<UniUpgradeCenterResult> { export default function () : Promise<UniUpgradeCenterResult> {
// #endif
return new Promise<UniUpgradeCenterResult>((resolve, reject) => { return new Promise<UniUpgradeCenterResult>((resolve, reject) => {
callCheckVersion().then(async (uniUpgradeCenterResult) => { callCheckVersion().then(async (uniUpgradeCenterResult) => {
// NOTE uni-app x 3.96 解构有问题 // NOTE uni-app x 3.96 解构有问题
...@@ -20,65 +14,72 @@ export default function () : Promise<UniUpgradeCenterResult> { ...@@ -20,65 +14,72 @@ export default function () : Promise<UniUpgradeCenterResult> {
const message = uniUpgradeCenterResult.message const message = uniUpgradeCenterResult.message
const url = uniUpgradeCenterResult.url // 安装包下载地址 const url = uniUpgradeCenterResult.url // 安装包下载地址
// 此处逻辑仅为示例,可自行编写 // 此处逻辑仅为示例,可自行编写
if (code > 0) { if (code > 0) {
// 腾讯云和阿里云下载链接不同,需要处理一下,阿里云会原样返回 // 腾讯云和阿里云下载链接不同,需要处理一下,阿里云会原样返回
const tcbRes = await uniCloud.getTempFileURL({ fileList: [url] }); const tcbRes = await uniCloud.getTempFileURL({ fileList: [url] });
if (typeof tcbRes.fileList[0].tempFileURL !== 'undefined') uniUpgradeCenterResult.url = tcbRes.fileList[0].tempFileURL; if (typeof tcbRes.fileList[0].tempFileURL !== 'undefined') uniUpgradeCenterResult.url = tcbRes.fileList[0].tempFileURL;
/** /**
* 提示升级一 * 提示升级一
* 使用 uni.showModal * 使用 uni.showModal
*/ */
// return updateUseModal(uniUpgradeCenterResult) // return updateUseModal(uniUpgradeCenterResult)
// #ifndef UNI-APP-X // #ifndef UNI-APP-X
// 静默更新,只有wgt有 // 静默更新,只有wgt有
if (uniUpgradeCenterResult.is_silently) { if (uniUpgradeCenterResult.is_silently) {
uni.downloadFile({ uni.downloadFile({
url, url,
success: res => { success: res => {
if (res.statusCode == 200) { if (res.statusCode == 200) {
// 下载好直接安装,下次启动生效 // 下载好直接安装,下次启动生效
plus.runtime.install(res.tempFilePath, { plus.runtime.install(res.tempFilePath, {
force: false force: false
}); });
} }
} }
}); });
return; return;
} }
// #endif // #endif
/** /**
* 提示升级二 * 提示升级二
* 官方适配的升级弹窗,可自行替换资源适配UI风格 * 官方适配的升级弹窗,可自行替换资源适配UI风格
*/ */
// #ifndef UNI-APP-X uni.setStorageSync(PACKAGE_INFO_KEY, uniUpgradeCenterResult)
uni.setStorageSync(PACKAGE_INFO_KEY, uniUpgradeCenterResult) // #ifndef UNI-APP-X
uni.navigateTo({ uni.navigateTo({
url: `/uni_modules/uni-upgrade-center-app/pages/upgrade-popup?local_storage_key=${PACKAGE_INFO_KEY}`, url: `/uni_modules/uni-upgrade-center-app/pages/upgrade-popup?local_storage_key=${PACKAGE_INFO_KEY}`,
fail: (err) => { fail: (err) => {
console.error('更新弹框跳转失败', err) console.error('更新弹框跳转失败', err)
uni.removeStorageSync(PACKAGE_INFO_KEY) uni.removeStorageSync(PACKAGE_INFO_KEY)
} }
})
// #endif
// #ifdef UNI-APP-X
uni.openDialogPage({
url: `/uni_modules/uni-upgrade-center-app/pages/uni-app-x/upgrade-popup?local_storage_key=${PACKAGE_INFO_KEY}`,
disableEscBack: true,
fail: (err) => {
console.error('更新弹框跳转失败', err)
uni.removeStorageSync(PACKAGE_INFO_KEY)
}
}) })
// #endif // #endif
// #ifdef UNI-APP-X
component?.$callMethod('show', true, uniUpgradeCenterResult)
// #endif
return resolve(uniUpgradeCenterResult) return resolve(uniUpgradeCenterResult)
} else if (code < 0) { } else if (code < 0) {
console.error(message) console.error(message)
return reject(uniUpgradeCenterResult) return reject(uniUpgradeCenterResult)
} }
return resolve(uniUpgradeCenterResult) return resolve(uniUpgradeCenterResult)
}).catch((err) => { }).catch((err) => {
reject(err) reject(err)
}) })
}); });
} }
/** /**
* 使用 uni.showModal 升级 * 使用 uni.showModal 升级
...@@ -104,13 +105,13 @@ function updateUseModal(packageInfo : UniUpgradeCenterResult) : void { ...@@ -104,13 +105,13 @@ function updateUseModal(packageInfo : UniUpgradeCenterResult) : void {
let confirmText = '立即下载更新' let confirmText = '立即下载更新'
// #endif // #endif
return uni.showModal({ return uni.showModal({
title, title,
content: contents, content: contents,
showCancel: !is_mandatory, showCancel: !is_mandatory,
confirmText, confirmText,
success: res => { success: res => {
if (res.cancel) return; if (res.cancel) return;
if (isiOS) { if (isiOS) {
// iOS 平台跳转 AppStore // iOS 平台跳转 AppStore
...@@ -123,10 +124,10 @@ function updateUseModal(packageInfo : UniUpgradeCenterResult) : void { ...@@ -123,10 +124,10 @@ function updateUseModal(packageInfo : UniUpgradeCenterResult) : void {
return; return;
} }
uni.showToast({ uni.showToast({
title: '后台下载中……', title: '后台下载中……',
duration: 1000 duration: 1000
}); });
// wgt 和 安卓下载更新 // wgt 和 安卓下载更新
uni.downloadFile({ uni.downloadFile({
...@@ -137,7 +138,7 @@ function updateUseModal(packageInfo : UniUpgradeCenterResult) : void { ...@@ -137,7 +138,7 @@ function updateUseModal(packageInfo : UniUpgradeCenterResult) : void {
return; return;
} }
// 下载好直接安装,下次启动生效 // 下载好直接安装,下次启动生效
// uni-app x 项目没有 plus5+ 故使用条件编译 // uni-app x 项目没有 plus5+ 故使用条件编译
// #ifndef UNI-APP-X // #ifndef UNI-APP-X
plus.runtime.install(res.tempFilePath, { plus.runtime.install(res.tempFilePath, {
force: false force: false
...@@ -166,23 +167,23 @@ function updateUseModal(packageInfo : UniUpgradeCenterResult) : void { ...@@ -166,23 +167,23 @@ function updateUseModal(packageInfo : UniUpgradeCenterResult) : void {
}); });
// #endif // #endif
// #ifdef UNI-APP-X // #ifdef UNI-APP-X
uni.installApk({ uni.installApk({
filePath: res.tempFilePath, filePath: res.tempFilePath,
success: () => { success: () => {
uni.showModal({ uni.showModal({
title: '安装成功请手动重启' title: '安装成功请手动重启'
}); });
}, },
fail: err => { fail: err => {
uni.showModal({ uni.showModal({
title: '更新失败', title: '更新失败',
content: err.errMsg, content: err.errMsg,
showCancel: false showCancel: false
}); });
} }
}); });
// #endif // #endif
} }
}); });
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册