关于应用页面 Cordova&OpenHarmony 混合开发实战

📌 模块概述

关于应用页面展示了家庭菜谱应用的基本信息,包括版本号、开发者信息、许可证、更新日志和反馈渠道等。这是一个相对简单的信息展示页面,大部分内容由 Web 层负责渲染;但在某些场景下,版本号、构建时间等信息可能来自原生层,因此可以通过 ArkTS 插件动态获取。

🔗 关于页面数据来源

  1. 应用版本号可以写死在 Web 层常量中,也可以从 ArkTS 插件动态获取;
  2. 开发者信息、许可证文本等通常是静态内容,直接在 HTML 中编写;
  3. 更新日志可以从外部 JSON 文件或 ArkTS 插件加载;
  4. 反馈链接可以直接指向邮箱、GitHub Issues 或内置反馈表单。

🔧 关于应用页面结构(HTML 片段)

html 复制代码
<div class="card">
  <div class="card-header">
    <h3 class="card-title">家庭菜谱</h3>
    <p class="text-sub">版本 1.0.0</p>
  </div>
  <div class="card-content">
    <p>一款为家庭烹饪爱好者设计的菜谱管理应用。</p>
    <p>开发者:示例团队</p>
    <p>许可证:MIT</p>
  </div>
</div>

这段 HTML 展示了关于应用页面的基本结构:应用名称、版本号和简介。

🔧 动态加载版本信息(JavaScript 片段)

javascript 复制代码
async function loadAppInfo() {
  let version = '1.0.0';
  if (window.cordova) {
    version = await getVersionFromNative();
  }
  document.getElementById('app-version').textContent = version;
}

async function getVersionFromNative() {
  return new Promise(resolve => {
    cordova.exec(resolve, () => resolve('1.0.0'), 'AppInfoPlugin', 'getVersion', []);
  });
}

这段代码展示了如何在 Web 层动态获取应用版本号:如果运行在 Cordova 环境中,就从 ArkTS 插件获取;否则使用默认值。

🔌 在鸿蒙原生层提供版本信息(ArkTS 片段)

ts 复制代码
// entry/src/main/ets/plugins/AppInfoPlugin.ets
import plugin from '@ohos.plugin';

@plugin
export default class AppInfoPlugin {
  async getVersion(): Promise<string> {
    // 示例:从应用配置或包管理器获取版本号
    return '1.0.0';
  }

  async getDeviceInfo(): Promise<string> {
    // 示例:返回设备型号和系统版本
    return 'OpenHarmony Device';
  }
}

ArkTS 的 AppInfoPlugin 提供了获取版本和设备信息的方法。真实项目中可以从应用的 app.json5 或系统 API 中读取这些信息。

javascript 复制代码
async function loadDeviceInfo() {
  if (!window.cordova) return;
  const info = await new Promise(resolve => {
    cordova.exec(resolve, () => resolve(''), 'AppInfoPlugin', 'getDeviceInfo', []);
  });
  if (info) {
    document.getElementById('device-info').textContent = info;
  }
}

在 Web 层,我们可以在页面加载时调用 loadDeviceInfo 获取设备信息,并展示在关于页面中,让用户了解应用运行的环境。

📝 小结

关于应用页面是用户了解应用基本信息的重要窗口,虽然内容相对简单,但通过 Cordova&OpenHarmony 混合架构,我们可以让版本号、设备信息等动态内容来自原生层,保证信息的准确性和一致性。这样既简化了 Web 层的维护,又充分利用了原生层的能力。

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

相关推荐
TrisighT10 小时前
DevEco Code 写鸿蒙 ArkTS 确实快,但我试了三天后把默认引擎换成了 Cursor
ai编程·harmonyos·cursor
liz7up10 小时前
鸿蒙原生流程图 & 审批流组件 hmflowkit
harmonyos
网易云信1 天前
全框架覆盖!网易智企IM鸿蒙生态适配再进一步
人工智能·aigc·harmonyos
TrisighT1 天前
我用 AI 逆向了 ArkTS @Builder 的编译产物,看完再也不敢乱写嵌套了
ai编程·harmonyos·arkts
ONEDAY2 天前
HarmonyOS 深色模式适配实践:从资源、WebView 到网络图统一处理
harmonyos
鸿蒙开发3 天前
鸿蒙(HarmonyOS NEXT)表单校验别再手撸正则了 —— 我写了个 ArkTS 版 zod
harmonyos
TrisighT3 天前
ArkTS 的 @BuilderParam 你八成只用了皮毛——那个尾随闭包写法差点被我当 bug 删了
harmonyos·arkts·arkui
ONEDAY4 天前
HarmonyOS 多 Product 构建实践:一套代码生成多个产物
harmonyos
TT_Close4 天前
别劝退了!5秒搞定 Flutter 鸿蒙 FVM 起跑线
flutter·harmonyos·visual studio code
TrisighT4 天前
ArkTS 列表滚动时为什么会闪现旧数据?我扒了 LazyForEach 的复用逻辑
harmonyos·arkts·arkui