xugenyuan

ref |> mPaaS升级工具封装

Signed-off-by: xugenyuan <xugenyuan@wondertek.com.cn>
@@ -54,4 +54,4 @@ export { NetworkType } from './src/main/ets/network/NetworkType' @@ -54,4 +54,4 @@ export { NetworkType } from './src/main/ets/network/NetworkType'
54 54
55 export { MpaasUtils } from './src/main/ets/mpaas/MpaasUtils' 55 export { MpaasUtils } from './src/main/ets/mpaas/MpaasUtils'
56 56
57 -export { MpaasUpgradeCheck } from './src/main/ets/mpaas/MpaasUpgradeCheck'  
  57 +export { MpaasUpgradeCheck, UpgradeTipContent } from './src/main/ets/mpaas/MpaasUpgradeCheck'
1 import { MPUpgradeService } from '@mpaas/upgrade' 1 import { MPUpgradeService } from '@mpaas/upgrade'
2 -import { MpaasUtils } from './MpaasUtils' 2 +import { upgradeRes } from '@mpaas/upgrade/src/main/ets/t4/a'
  3 +import { AppUtils } from '../utils/AppUtils'
  4 +import { SPHelper } from '../utils/SPHelper'
  5 +
  6 +export interface UpgradeTipContent {
  7 +
  8 + content: string
  9 + newVersion: string
  10 + downloadUrl: string
  11 + forceUpgrade: boolean
  12 +}
3 13
4 export class MpaasUpgradeCheck { 14 export class MpaasUpgradeCheck {
5 15
@@ -12,33 +22,72 @@ export class MpaasUpgradeCheck { @@ -12,33 +22,72 @@ export class MpaasUpgradeCheck {
12 } 22 }
13 } 23 }
14 24
15 - async checkNewVersion() {  
16 - const utdid = await MpaasUtils.mpaasUtdid()  
17 - console.log("mpaas utdid: ", utdid) 25 + checkNewVersion(): Promise<UpgradeTipContent | null> {
18 26
19 - MPUpgradeService.checkNewVersion().then((response)=>{  
20 - let str = JSON.stringify(response)  
21 - console.log("mpaas upgrade check", str)  
22 - AlertDialog.show( 27 + return new Promise((resolve, fail) => {
  28 + MPUpgradeService.checkNewVersion().then((response)=>{
  29 + let str = JSON.stringify(response)
  30 + console.log("mpaas upgrade check", str)
  31 +
  32 + /*
23 { 33 {
24 - title: '升级检测结果',  
25 - message: str,  
26 - autoCancel: true,  
27 - offset: { dx: 0, dy: -20 },  
28 - gridCount: 3,  
29 - confirm: {  
30 - value: '确认',  
31 - action: () => {  
32 - console.info('upgrade result',response)  
33 - }  
34 - },  
35 - cancel: () => {  
36 - console.info('Closed callbacks') 34 + "android64FileSize": 0,
  35 + "downloadURL": "https://appgallery.huawei.com/#/app",
  36 + "fileSize": 0,
  37 + "fullMd5": "no md5",
  38 + "guideMemo": "欢迎使用新版本",
  39 + "isWifi": 0,
  40 + "netType": "ALL",
  41 + "newestVersion": "1.0.1",
  42 + "resultStatus": 204,
  43 + "silentType": 0,
  44 + "upgradeVersion": "1.0.1"
  45 + }*/
  46 +
  47 + let res = response as upgradeRes
  48 +
  49 + // AliUpgradeNewVersion = 201, /*当前使用的已是最新版本*/
  50 + // AliUpgradeOneTime = 202, /*客户端已有新版本,单次提醒*/
  51 + // AliUpgradeForceUpdate = 203, /*客户端已有新版本,强制升级(已废弃)*/
  52 + // AliUpgradeEveryTime = 204, /*客户端已有新版本,多次提醒*/
  53 + // AliUpgradeRejectLogin = 205, /*限制登录(已废弃)*/
  54 + // AliUpgradeForceUpdateWithLogin = 206 /*客户端已有新版本,强制升级*/
  55 +
  56 + const currentAppVersoin = AppUtils.getAppVersionName()
  57 +
  58 + if (res.resultStatus == 201) {
  59 + resolve(null)
  60 + return
  61 + }
  62 +
  63 + // 单次升级控制
  64 + if (res.resultStatus == 202) {
  65 + const oldOnceValue = SPHelper.default.getSync("upgradeOnceKey", false) as boolean
  66 + if (true == oldOnceValue) {
  67 + resolve(null)
  68 + return
  69 + }
  70 + SPHelper.default.save("upgradeOnceKey", true)
  71 + } else {
  72 + SPHelper.default.save("upgradeOnceKey", false)
  73 + }
  74 +
  75 + if (res.resultStatus == 202 || res.resultStatus == 204 || res.resultStatus == 206) {
  76 + let content: UpgradeTipContent = {
  77 + content: res.guideMemo,
  78 + newVersion: res.upgradeVersion,
  79 + downloadUrl: res.downloadURL,
  80 + forceUpgrade: res.resultStatus == 206
37 } 81 }
  82 + resolve(content)
  83 + return
38 } 84 }
39 - )  
40 - }).catch((error: Error) => {  
41 - console.log("mpaas upgrade fail", `name: ${error.name}, message: ${error.message}, \nstack: ${error.stack}`) 85 +
  86 + resolve(null)
  87 + }).catch((error: Error) => {
  88 + console.log("mpaas upgrade fail", `name: ${error.name}, message: ${error.message}, \nstack: ${error.stack}`)
  89 + fail("检测升级失败")
  90 + })
42 }) 91 })
43 } 92 }
44 } 93 }
1 import { MPFramework } from '@mpaas/framework' 1 import { MPFramework } from '@mpaas/framework'
2 import { common } from '@kit.AbilityKit'; 2 import { common } from '@kit.AbilityKit';
3 3
  4 +/*
  5 +对接mpaas注意:
  6 +* 1、后台创建mpaas.config,需要包名。放到rawfile目录
  7 +* 2、网关加密hs_1222.png图片,放到rawfile目录
  8 +* 3. 配置和加密图片,需要包名和签名对应,否则无法使用
  9 + * */
  10 +
4 export class MpaasUtils { 11 export class MpaasUtils {
5 12
6 // 启动时onCreate()方法调用 13 // 启动时onCreate()方法调用
@@ -53,5 +53,16 @@ export class AppUtils { @@ -53,5 +53,16 @@ export class AppUtils {
53 } 53 }
54 return ''; 54 return '';
55 } 55 }
  56 +
  57 + static getFingerprint(): string {
  58 + try {
  59 + let bundleInfo =
  60 + bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO);
  61 + let finger = bundleInfo.signatureInfo.fingerprint;
  62 + } catch (e) {
  63 + Logger.warn(TAG, 'get app signatureinfo error:' + e?.message);
  64 + }
  65 + return '';
  66 + }
56 } 67 }
57 68
@@ -5,7 +5,7 @@ import { BreakpointSystem, EmitterEventId, EmitterUtils, Logger, MpaasUpgradeChe @@ -5,7 +5,7 @@ import { BreakpointSystem, EmitterEventId, EmitterUtils, Logger, MpaasUpgradeChe
5 import router from '@ohos.router'; 5 import router from '@ohos.router';
6 import { promptAction } from '@kit.ArkUI'; 6 import { promptAction } from '@kit.ArkUI';
7 import { HWLocationUtils } from 'wdHwAbility/Index'; 7 import { HWLocationUtils } from 'wdHwAbility/Index';
8 - 8 +import { UpgradeTipDialog } from "./upgradePage/UpgradeTipDialog"
9 9
10 const TAG = 'MainPage'; 10 const TAG = 'MainPage';
11 11
@@ -16,6 +16,7 @@ struct MainPage { @@ -16,6 +16,7 @@ struct MainPage {
16 @Provide pageHide: number = -1 16 @Provide pageHide: number = -1
17 private breakpointSystem: BreakpointSystem = new BreakpointSystem() 17 private breakpointSystem: BreakpointSystem = new BreakpointSystem()
18 @StorageLink('currentBreakpoint') @Watch('watchCurrentBreakpoint') currentBreakpoint: string = BreakpointConstants.BREAKPOINT_XS; 18 @StorageLink('currentBreakpoint') @Watch('watchCurrentBreakpoint') currentBreakpoint: string = BreakpointConstants.BREAKPOINT_XS;
  19 + upgradeDialogController?: CustomDialogController
19 20
20 watchCurrentBreakpoint() { 21 watchCurrentBreakpoint() {
21 Logger.info(TAG, `watchCurrentBreakpoint, this.currentBreakpoint: ${this.currentBreakpoint}`); 22 Logger.info(TAG, `watchCurrentBreakpoint, this.currentBreakpoint: ${this.currentBreakpoint}`);
@@ -44,8 +45,25 @@ struct MainPage { @@ -44,8 +45,25 @@ struct MainPage {
44 Logger.info(TAG, 'onPageShow'); 45 Logger.info(TAG, 'onPageShow');
45 this.pageShow = Math.random() 46 this.pageShow = Math.random()
46 47
  48 + // TODO: 升级检查,暂时不开放
  49 + // this.upgradeCheck()
  50 + }
  51 +
  52 + upgradeCheck() {
47 const mpaas = new MpaasUpgradeCheck() 53 const mpaas = new MpaasUpgradeCheck()
48 - mpaas.checkNewVersion() 54 + mpaas.checkNewVersion().then((data) => {
  55 + if (data != null) {
  56 +
  57 + this.upgradeDialogController = new CustomDialogController({
  58 + builder: UpgradeTipDialog({
  59 + tipContent:data
  60 + })
  61 + })
  62 + this.upgradeDialogController?.open()
  63 + }
  64 + }).catch(() => {
  65 +
  66 + })
49 } 67 }
50 68
51 onBackPress() { 69 onBackPress() {
  1 +import { UpgradeTipContent } from 'wdKit/Index'
  2 +
  3 +@Preview
  4 +@CustomDialog
  5 +export struct UpgradeTipDialog {
  6 + private tipContent: UpgradeTipContent = {} as UpgradeTipContent
  7 + cancel?: () => void
  8 + confirm?: () => void
  9 + controller: CustomDialogController
  10 +
  11 + build() {
  12 + Column() {
  13 + Text(this.tipContent.content).fontSize(20).margin({ top: 10, bottom: 10 })
  14 + Flex({ justifyContent: FlexAlign.SpaceAround }) {
  15 + Button('cancel')
  16 + .onClick(() => {
  17 + this.controller.close()
  18 + if (this.cancel) {
  19 + this.cancel()
  20 + }
  21 + }).backgroundColor(0xffffff).fontColor(Color.Black)
  22 + Button('立即升级')
  23 + .onClick(() => {
  24 + this.controller.close()
  25 + if (this.confirm) {
  26 + this.confirm()
  27 + }
  28 + }).backgroundColor(0xffffff).fontColor(Color.Red)
  29 + }.margin({ bottom: 10 })
  30 + }
  31 + }
  32 +
  33 +
  34 +}