xugenyuan

ref |> 集成mPaaS升级

Signed-off-by: xugenyuan <xugenyuan@wondertek.com.cn>
@mpaas:registry=https://mpaas-ohpm.oss-cn-hangzhou.aliyuncs.com/meta
\ No newline at end of file
... ...
import { expect } from '@ohos/hypium';
export { Logger } from './src/main/ets/utils/Logger'
export { ResourcesUtils } from './src/main/ets/utils/ResourcesUtils'
... ... @@ -53,3 +55,7 @@ export { NetworkType } from './src/main/ets/network/NetworkType'
export { CustomToast } from './src/main/ets/reusable/CustomToast'
export { UmengStats } from "./src/main/ets/umeng/UmengStats"
export { MpaasUtils } from './src/main/ets/mpaas/MpaasUtils'
export { MpaasUpgradeCheck, UpgradeTipContent } from './src/main/ets/mpaas/MpaasUpgradeCheck'
... ...
import { MPUpgradeService } from '@mpaas/upgrade'
import { upgradeRes } from '@mpaas/upgrade/src/main/ets/t4/a'
import { AppUtils } from '../utils/AppUtils'
import { SPHelper } from '../utils/SPHelper'
export interface UpgradeTipContent {
content: string
newVersion: string
downloadUrl: string
forceUpgrade: boolean
}
export class MpaasUpgradeCheck {
/// 默认提示框
checkNewVersionAndShow() {
try {
MPUpgradeService.checkNewVersionAndShow()
} catch (error) {
console.log("mpaas upgrade fail", JSON.stringify(error))
}
}
checkNewVersion(): Promise<UpgradeTipContent | null> {
return new Promise((resolve, fail) => {
MPUpgradeService.checkNewVersion().then((response)=>{
let str = JSON.stringify(response)
console.log("mpaas upgrade check", str)
/*
{
"android64FileSize": 0,
"downloadURL": "https://appgallery.huawei.com/#/app",
"fileSize": 0,
"fullMd5": "no md5",
"guideMemo": "欢迎使用新版本",
"isWifi": 0,
"netType": "ALL",
"newestVersion": "1.0.1",
"resultStatus": 204,
"silentType": 0,
"upgradeVersion": "1.0.1"
}*/
let res = response as upgradeRes
// AliUpgradeNewVersion = 201, /*当前使用的已是最新版本*/
// AliUpgradeOneTime = 202, /*客户端已有新版本,单次提醒*/
// AliUpgradeForceUpdate = 203, /*客户端已有新版本,强制升级(已废弃)*/
// AliUpgradeEveryTime = 204, /*客户端已有新版本,多次提醒*/
// AliUpgradeRejectLogin = 205, /*限制登录(已废弃)*/
// AliUpgradeForceUpdateWithLogin = 206 /*客户端已有新版本,强制升级*/
const currentAppVersoin = AppUtils.getAppVersionName()
if (res.resultStatus == 201) {
resolve(null)
return
}
// 单次升级控制
if (res.resultStatus == 202) {
const oldOnceValue = SPHelper.default.getSync("upgradeOnceKey", false) as boolean
if (true == oldOnceValue) {
resolve(null)
return
}
SPHelper.default.save("upgradeOnceKey", true)
} else {
SPHelper.default.save("upgradeOnceKey", false)
}
if (res.resultStatus == 202 || res.resultStatus == 204 || res.resultStatus == 206) {
let content: UpgradeTipContent = {
content: res.guideMemo,
newVersion: res.upgradeVersion,
downloadUrl: res.downloadURL,
forceUpgrade: res.resultStatus == 206
}
resolve(content)
return
}
resolve(null)
}).catch((error: Error) => {
console.log("mpaas upgrade fail", `name: ${error.name}, message: ${error.message}, \nstack: ${error.stack}`)
fail("检测升级失败")
})
})
}
}
\ No newline at end of file
... ...
import { MPFramework } from '@mpaas/framework'
import { common } from '@kit.AbilityKit';
/*
对接mpaas注意:
* 1、后台创建mpaas.config,需要包名。放到rawfile目录
* 2、网关加密hs_1222.png图片,放到rawfile目录
* 3. 配置和加密图片,需要包名和签名对应,否则无法使用
* */
export class MpaasUtils {
// 启动时onCreate()方法调用
static initApp(context: common.UIAbilityContext) {
MPFramework.create(context);
}
// 获取mPaaS utdid
static async mpaasUtdid() {
let utdid = await MPFramework.instance.udid
return utdid
}
// 登录和退出登录调用,用来管理白名单用
static setupUserId(userId?: string) {
MPFramework.instance.userId = userId
}
}
\ No newline at end of file
... ...
... ... @@ -63,5 +63,16 @@ export class AppUtils {
// TODO: 待确认,暂时写死Android
return "Harmony"
}
static getFingerprint(): string {
try {
let bundleInfo =
bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO);
let finger = bundleInfo.signatureInfo.fingerprint;
} catch (e) {
Logger.warn(TAG, 'get app signatureinfo error:' + e?.message);
}
return '';
}
}
... ...
... ... @@ -5,10 +5,161 @@
"lockfileVersion": 3,
"ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.",
"specifiers": {
"@mpaas/compress@^1.0.0": "@mpaas/compress@1.0.0",
"@mpaas/fake-island@^1.0.0": "@mpaas/fake-island@1.0.0",
"@mpaas/framework@0.0.2": "@mpaas/framework@0.0.2",
"@mpaas/framework@^0.0.2": "@mpaas/framework@0.0.2",
"@mpaas/fs-ext@^1.0.0": "@mpaas/fs-ext@1.0.0",
"@mpaas/lang@^1.0.0": "@mpaas/lang@1.0.0",
"@mpaas/path@^1.0.0": "@mpaas/path@1.0.0",
"@mpaas/rpc@^0.0.2": "@mpaas/rpc@0.0.2",
"@mpaas/shuckle@^1.0.0": "@mpaas/shuckle@1.0.0",
"@mpaas/trace-log@^0.0.2": "@mpaas/trace-log@0.0.2",
"@mpaas/transport_build@^0.0.2": "@mpaas/transport_build@0.0.2",
"@mpaas/udid@0.0.2": "@mpaas/udid@0.0.2",
"@mpaas/upgrade@0.0.2": "@mpaas/upgrade@0.0.2",
"@ohos/crypto-js@^2.0.2": "@ohos/crypto-js@2.0.3",
"@ohos/hypium@1.0.16": "@ohos/hypium@1.0.16",
"@ohos/pulltorefresh@^2.0.5": "@ohos/pulltorefresh@2.0.5"
"@ohos/pulltorefresh@^2.0.5": "@ohos/pulltorefresh@2.0.5",
"dayjs@^1.11.7": "dayjs@1.11.7",
"libcompress.so@oh_modules/.ohpm/@mpaas+compress@1.0.0/oh_modules/@mpaas/compress/src/main/cpp/types/libcompress": "libcompress.so@oh_modules/.ohpm/@mpaas+compress@1.0.0/oh_modules/@mpaas/compress/src/main/cpp/types/libcompress",
"libframework_api.so@oh_modules/.ohpm/@mpaas+framework@0.0.2/oh_modules/@mpaas/framework/src/main/cpp/types/libframework_api": "libframework_api.so@oh_modules/.ohpm/@mpaas+framework@0.0.2/oh_modules/@mpaas/framework/src/main/cpp/types/libframework_api",
"libgwcli.so@oh_modules/.ohpm/@mpaas+fake-island@1.0.0/oh_modules/@mpaas/fake-island/types": "libgwcli.so@oh_modules/.ohpm/@mpaas+fake-island@1.0.0/oh_modules/@mpaas/fake-island/types",
"liblang.so@oh_modules/.ohpm/@mpaas+lang@1.0.0/oh_modules/@mpaas/lang/types": "liblang.so@oh_modules/.ohpm/@mpaas+lang@1.0.0/oh_modules/@mpaas/lang/types",
"libmplog.so@oh_modules/.ohpm/@mpaas+trace-log@0.0.2/oh_modules/@mpaas/trace-log/types": "libmplog.so@oh_modules/.ohpm/@mpaas+trace-log@0.0.2/oh_modules/@mpaas/trace-log/types",
"libshuckle.so@oh_modules/.ohpm/@mpaas+shuckle@1.0.0/oh_modules/@mpaas/shuckle/src/main/cpp/types/libshuckle": "libshuckle.so@oh_modules/.ohpm/@mpaas+shuckle@1.0.0/oh_modules/@mpaas/shuckle/src/main/cpp/types/libshuckle",
"long@^5.2.1": "long@5.2.1",
"pako@^2.1.0": "pako@2.1.0"
},
"packages": {
"@mpaas/compress@1.0.0": {
"name": "@mpaas/compress",
"integrity": "sha512-x/aUK/zKjoUnd4kYGNAI1JMcEY2n4N6Rn+F+zcIYs8WLgobY6kFXTphLJ/NlSgjJklc2009U8zeStvtjon1zaQ==",
"resolved": "https://mpaas-ohpm.oss-cn-hangzhou.aliyuncs.com/dist/@mpaas/compress/compress-1.0.0.har",
"registryType": "ohpm",
"dependencies": {
"libcompress.so": "file:./src/main/cpp/types/libcompress"
}
},
"@mpaas/fake-island@1.0.0": {
"name": "@mpaas/fake-island",
"integrity": "sha512-cEt0Zsie0rwfvnYmqA+6pa93L6NLkJKwiqJCoE9Z2hFjhk9s4RSz7F0AUuj4WobrpdElXuipoCNFPXWLb4ZBlA==",
"resolved": "https://mpaas-ohpm.oss-cn-hangzhou.aliyuncs.com/dist/@mpaas/fake-island/fake-island-1.0.0.har",
"registryType": "ohpm",
"dependencies": {
"libgwcli.so": "file:./types"
}
},
"@mpaas/framework@0.0.2": {
"name": "@mpaas/framework",
"integrity": "sha512-nNpCI44zvg4fN9GNM5m31LdqfLrej9mMo/+BMny8QK+/Jvc3m/itE45bWZZ7unfflq40H2t4YOgtNAIW3m8MaA==",
"resolved": "https://mpaas-ohpm.oss-cn-hangzhou.aliyuncs.com/dist/@mpaas/framework/framework-0.0.2.har",
"registryType": "ohpm",
"dependencies": {
"libframework_api.so": "file:./src/main/cpp/types/libframework_api",
"@mpaas/udid": "0.0.2"
}
},
"@mpaas/fs-ext@1.0.0": {
"name": "@mpaas/fs-ext",
"integrity": "sha512-4TGUdrkmVSFktp1NcRdcs4uLYH6GvN1aTkMD2z8TJLztz5Hq5fMrvuznsmwTsSaRxGfGuyHPER8enMQo8wcfKA==",
"resolved": "https://mpaas-ohpm.oss-cn-hangzhou.aliyuncs.com/dist/@mpaas/fs-ext/fs-ext-1.0.0.har",
"registryType": "ohpm",
"dependencies": {
"@mpaas/path": "^1.0.0"
}
},
"@mpaas/lang@1.0.0": {
"name": "@mpaas/lang",
"integrity": "sha512-dcQ2QPrvwZgBhoGUjAbSFfkReDkwqEPMTzy/Xk05dhIB9VVznpLPahlQLVi0Am1FPATCT8J7DDrko9aJLOba+w==",
"resolved": "https://mpaas-ohpm.oss-cn-hangzhou.aliyuncs.com/dist/@mpaas/lang/lang-1.0.0.har",
"registryType": "ohpm",
"dependencies": {
"liblang.so": "file:./types"
}
},
"@mpaas/path@1.0.0": {
"name": "@mpaas/path",
"integrity": "sha512-TNjPaVOiq4DTiNFexSeI9isxeJ1H4q9Vieh3Bnv66o0U/e7rwV1qjEUtMvihX3MlsX0VKVkT0Xyf/wm18l4XYw==",
"resolved": "https://mpaas-ohpm.oss-cn-hangzhou.aliyuncs.com/dist/@mpaas/path/path-1.0.0.har",
"registryType": "ohpm"
},
"@mpaas/rpc@0.0.2": {
"name": "@mpaas/rpc",
"integrity": "sha512-BeiXDHW77CpZF5x4nuQc+3A7MfhFfU3+Wc73gac/ZRhIPuAAzfLmlzm5alqdm6oiWAw17ERQydUSG4SQSCHQ4g==",
"resolved": "https://mpaas-ohpm.oss-cn-hangzhou.aliyuncs.com/dist/@mpaas/rpc/rpc-0.0.2.har",
"registryType": "ohpm",
"dependencies": {
"@mpaas/transport_build": "^0.0.2",
"@mpaas/lang": "^1.0.0",
"@mpaas/framework": "^0.0.2"
}
},
"@mpaas/shuckle@1.0.0": {
"name": "@mpaas/shuckle",
"integrity": "sha512-B0MhrNzwG9pIoPxYVBldyenQWtWfTv5twd/0Ur1LbMpbp09AQ5wrZjKgDoeUtsIls9gzL9T8ngDZU6mRn8SYgQ==",
"resolved": "https://mpaas-ohpm.oss-cn-hangzhou.aliyuncs.com/dist/@mpaas/shuckle/shuckle-1.0.0.har",
"registryType": "ohpm",
"dependencies": {
"libshuckle.so": "file:./src/main/cpp/types/libshuckle",
"@mpaas/framework": "^0.0.2"
}
},
"@mpaas/trace-log@0.0.2": {
"name": "@mpaas/trace-log",
"integrity": "sha512-Llsdnx3L2tJJDg9vwJY01YsK4IOSmCo4SmAIW9yFHTzylrzFSWdFefRhJbNlkQQilXdYygEkBByXVvT1wFSmAg==",
"resolved": "https://mpaas-ohpm.oss-cn-hangzhou.aliyuncs.com/dist/@mpaas/trace-log/trace-log-0.0.2.har",
"registryType": "ohpm",
"dependencies": {
"@mpaas/lang": "^1.0.0",
"@mpaas/fs-ext": "^1.0.0",
"@mpaas/path": "^1.0.0",
"@mpaas/framework": "0.0.2",
"libmplog.so": "file:types",
"dayjs": "^1.11.7"
}
},
"@mpaas/transport_build@0.0.2": {
"name": "@mpaas/transport_build",
"integrity": "sha512-utz9C/cKIWbYrNiTBjk1gUhPH4/M73G64hWlrYKDpkfJHJmdYcQmmYV3v7Jit1z7Qg7hhu0aOaZzShqdQdC7rg==",
"resolved": "https://mpaas-ohpm.oss-cn-hangzhou.aliyuncs.com/dist/@mpaas/transport_build/transport_build-0.0.2.har",
"registryType": "ohpm",
"dependencies": {
"@ohos/crypto-js": "^2.0.2",
"dayjs": "^1.11.7",
"pako": "^2.1.0",
"@mpaas/fake-island": "^1.0.0",
"long": "^5.2.1",
"@mpaas/framework": "^0.0.2",
"@mpaas/shuckle": "^1.0.0",
"@mpaas/compress": "^1.0.0"
}
},
"@mpaas/udid@0.0.2": {
"name": "@mpaas/udid",
"integrity": "sha512-YFLSgBOrIjjmcFm4Cn2BB1tspHKHdB4qipVl4MUhHHDfiUYbLIVuv7x5xB9xPuPf0gKO8rx0yqUuzkaNDoNsAw==",
"resolved": "https://mpaas-ohpm.oss-cn-hangzhou.aliyuncs.com/dist/@mpaas/udid/udid-0.0.2.har",
"registryType": "ohpm"
},
"@mpaas/upgrade@0.0.2": {
"name": "@mpaas/upgrade",
"integrity": "sha512-VWamULIoJPA6nxUADwwNXd3uOspZeYAsRh05pApVilIdum5ktIMXIFl71jAKsChs3jtrhs9y5EShoZD4MZrGsA==",
"resolved": "https://mpaas-ohpm.oss-cn-hangzhou.aliyuncs.com/dist/@mpaas/upgrade/upgrade-0.0.2.har",
"registryType": "ohpm",
"dependencies": {
"@mpaas/framework": "^0.0.2",
"@mpaas/rpc": "^0.0.2",
"@mpaas/lang": "^1.0.0",
"@mpaas/transport_build": "^0.0.2",
"@mpaas/trace-log": "^0.0.2"
}
},
"@ohos/crypto-js@2.0.3": {
"name": "@ohos/crypto-js",
"integrity": "sha512-LuHaR1kD5PxnOXnuR1fWvPwGtbed9Q/QGzk6JOh8y5Wdzvi8brPesODZiaWf9scOVRHsbTPOtZw91vWB35p1vQ==",
"resolved": "https://ohpm.openharmony.cn/ohpm/@ohos/crypto-js/-/crypto-js-2.0.3.har",
"registryType": "ohpm"
},
"@ohos/hypium@1.0.16": {
"name": "@ohos/hypium",
"integrity": "sha512-PC3jpwKERg68V+4dmKU+SLjNps9i5JcQH57rQriaTsh62NBgVZs4SceMmNOtrIOyldbEJ5mXSwoZwiG/nkRmTw==",
... ... @@ -20,6 +171,60 @@
"integrity": "sha512-mgBvJ6Ga70LmAoPKTOEPLFJluHUEAaBt2+7wF7R6223Vw6UEbZrof1MyvVOLEHk8Uc64ASIMW/TNQ8AHraTV5A==",
"resolved": "https://repo.harmonyos.com/ohpm/@ohos/pulltorefresh/-/pulltorefresh-2.0.5.har",
"registryType": "ohpm"
},
"dayjs@1.11.7": {
"name": "dayjs",
"integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==",
"resolved": "https://ohpm.openharmony.cn/ohpm/dayjs/-/dayjs-1.11.7.tgz",
"shasum": "4b296922642f70999544d1144a2c25730fce63e2",
"registryType": "ohpm"
},
"libcompress.so@oh_modules/.ohpm/@mpaas+compress@1.0.0/oh_modules/@mpaas/compress/src/main/cpp/types/libcompress": {
"name": "libcompress.so",
"resolved": "oh_modules/.ohpm/@mpaas+compress@1.0.0/oh_modules/@mpaas/compress/src/main/cpp/types/libcompress",
"registryType": "local"
},
"libframework_api.so@oh_modules/.ohpm/@mpaas+framework@0.0.2/oh_modules/@mpaas/framework/src/main/cpp/types/libframework_api": {
"name": "libframework_api.so",
"resolved": "oh_modules/.ohpm/@mpaas+framework@0.0.2/oh_modules/@mpaas/framework/src/main/cpp/types/libframework_api",
"registryType": "local"
},
"libgwcli.so@oh_modules/.ohpm/@mpaas+fake-island@1.0.0/oh_modules/@mpaas/fake-island/types": {
"name": "libgwcli.so",
"resolved": "oh_modules/.ohpm/@mpaas+fake-island@1.0.0/oh_modules/@mpaas/fake-island/types",
"registryType": "local"
},
"liblang.so@oh_modules/.ohpm/@mpaas+lang@1.0.0/oh_modules/@mpaas/lang/types": {
"name": "liblang.so",
"resolved": "oh_modules/.ohpm/@mpaas+lang@1.0.0/oh_modules/@mpaas/lang/types",
"registryType": "local"
},
"libmplog.so@oh_modules/.ohpm/@mpaas+trace-log@0.0.2/oh_modules/@mpaas/trace-log/types": {
"name": "libmplog.so",
"resolved": "oh_modules/.ohpm/@mpaas+trace-log@0.0.2/oh_modules/@mpaas/trace-log/types",
"registryType": "local"
},
"libshuckle.so@oh_modules/.ohpm/@mpaas+shuckle@1.0.0/oh_modules/@mpaas/shuckle/src/main/cpp/types/libshuckle": {
"name": "lishuckle.so",
"resolved": "oh_modules/.ohpm/@mpaas+shuckle@1.0.0/oh_modules/@mpaas/shuckle/src/main/cpp/types/libshuckle",
"registryType": "local",
"dependencies": {
"@mpaas/framework": "^0.0.2"
}
},
"long@5.2.1": {
"name": "long",
"integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==",
"resolved": "https://ohpm.openharmony.cn/ohpm/long/-/long-5.2.1.tgz",
"shasum": "e27595d0083d103d2fa2c20c7699f8e0c92b897f",
"registryType": "ohpm"
},
"pako@2.1.0": {
"name": "pako",
"integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==",
"resolved": "https://ohpm.openharmony.cn/ohpm/pako/-/pako-2.1.0.tgz",
"shasum": "266cc37f98c7d883545d11335c00fbd4062c9a86",
"registryType": "ohpm"
}
}
}
\ No newline at end of file
... ...
... ... @@ -9,7 +9,10 @@
"main": "",
"version": "1.0.0",
"dependencies": {
"@ohos/pulltorefresh": "^2.0.5"
"@ohos/pulltorefresh": "^2.0.5",
"@mpaas/udid": "0.0.2",
"@mpaas/upgrade": "0.0.2",
"@mpaas/framework": "0.0.2"
},
"dynamicDependencies": {}
}
\ No newline at end of file
... ...
@mpaas:registry=https://mpaas-ohpm.oss-cn-hangzhou.aliyuncs.com/meta
\ No newline at end of file
... ...
... ... @@ -8,6 +8,7 @@ import {
EmitterEventId,
EmitterUtils,
Logger,
MpaasUtils,
NetworkManager,
NetworkType,
SPHelper,
... ... @@ -25,6 +26,10 @@ export default class EntryAbility extends UIAbility {
UmengStats.preInit(this.context)
SPHelper.init(this.context);
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
// mPaaS 初始化
MpaasUtils.initApp(this.context)
registerRouter();
LoginModule.startup()
NetworkManager.getInstance().init()
... ...
import { BottomNavigationComponent, LogoutViewModel, PermissionDesComponent } from 'wdComponent';
import { BreakpointConstants } from 'wdConstant';
import { BreakpointSystem, EmitterEventId, EmitterUtils, Logger } from 'wdKit';
import { HWLocationUtils, WDPushNotificationManager } from 'wdHwAbility/Index';
import { common } from '@kit.AbilityKit';
import { BreakpointSystem, EmitterEventId, EmitterUtils, Logger, MpaasUpgradeCheck } from 'wdKit';
import router from '@ohos.router';
import { promptAction } from '@kit.ArkUI';
import { UpgradeTipDialog } from "./upgradePage/UpgradeTipDialog"
const TAG = 'MainPage';
... ... @@ -16,6 +18,8 @@ struct MainPage {
private breakpointSystem: BreakpointSystem = new BreakpointSystem()
@StorageLink('currentBreakpoint') @Watch('watchCurrentBreakpoint') currentBreakpoint: string = BreakpointConstants.BREAKPOINT_XS;
@State isPermission: boolean = false
upgradeDialogController?: CustomDialogController
watchCurrentBreakpoint() {
Logger.info(TAG, `watchCurrentBreakpoint, this.currentBreakpoint: ${this.currentBreakpoint}`);
}
... ... @@ -61,6 +65,26 @@ struct MainPage {
onPageShow() {
Logger.info(TAG, 'onPageShow');
this.pageShow = Math.random()
// TODO: 升级检查,暂时不开放
// this.upgradeCheck()
}
upgradeCheck() {
const mpaas = new MpaasUpgradeCheck()
mpaas.checkNewVersion().then((data) => {
if (data != null) {
this.upgradeDialogController = new CustomDialogController({
builder: UpgradeTipDialog({
tipContent:data
})
})
this.upgradeDialogController?.open()
}
}).catch(() => {
})
}
onBackPress() {
... ...
import { UpgradeTipContent } from 'wdKit/Index'
@Preview
@CustomDialog
export struct UpgradeTipDialog {
private tipContent: UpgradeTipContent = {} as UpgradeTipContent
cancel?: () => void
confirm?: () => void
controller: CustomDialogController
build() {
Column() {
Text(this.tipContent.content).fontSize(20).margin({ top: 10, bottom: 10 })
Flex({ justifyContent: FlexAlign.SpaceAround }) {
Button('cancel')
.onClick(() => {
this.controller.close()
if (this.cancel) {
this.cancel()
}
}).backgroundColor(0xffffff).fontColor(Color.Black)
Button('立即升级')
.onClick(() => {
this.controller.close()
if (this.confirm) {
this.confirm()
}
}).backgroundColor(0xffffff).fontColor(Color.Red)
}.margin({ bottom: 10 })
}
}
}
\ No newline at end of file
... ...
{
"absBase64Code":"",
"appId":"PRI2B87143171150",
"appKey":"PRI2B87143171150_HARMONY",
"base64Code":"",
"v6Base64Code":"",
"workspaceId":"default",
"rpcGW":"http://123.56.249.180/mgw.htm",
"mpaasapi":"http://123.56.249.180/mgw.htm",
"pushPort":"",
"pushGW":"",
"logGW":"",
"mvetAppWS":"10.250.12.199"
}
\ No newline at end of file
... ...