uni-app 鸿蒙 uni小程序SDK uni页面与鸿蒙原生页面层级问题

发布于 1周前 作者 caililin 来自 Uni-App

uni-app 鸿蒙 uni小程序SDK uni页面与鸿蒙原生页面层级问题

开发环境 版本号 项目创建方式
Vue 2.3.15

操作步骤:

  • uni页面跳转鸿蒙原生页面

预期结果:

  • 类似app接入效果,uni和原生层级,可正常跳转展示

实际结果:

  • 原生页面显示在uni下面,导致原生页面看不到,一直关闭uni页面,体验也不好

bug描述:

  • uni页面与鸿蒙原生页面层级问题,uni页面跳转鸿蒙原生页面,原生页面显示在uni页面底层,导致被遮挡,每次都要关闭uni页面,体验有点差,需要重复打开和关闭uni页面

更多关于uni-app 鸿蒙 uni小程序SDK uni页面与鸿蒙原生页面层级问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

保持关注

更多关于uni-app 鸿蒙 uni小程序SDK uni页面与鸿蒙原生页面层级问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


鸿蒙项目采用Navigation路由方式,uni跳转原生,会存在遮挡问题

在处理uni-app鸿蒙uni小程序SDK中的页面层级问题时,特别是涉及到uni页面与鸿蒙原生页面之间的层级关系,通常需要通过特定的API或配置来确保两者之间的正确显示和交互。以下是一个简单的示例代码,展示如何在uni-app中嵌入鸿蒙原生页面,并控制其层级关系。

1. 配置manifest.json

首先,在uni-app项目的manifest.json文件中,需要配置鸿蒙平台的相关信息,确保项目支持鸿蒙平台。

{
  "mp-huawei": { // 鸿蒙平台配置
    "appid": "your-huawei-appid",
    "setting": {
      "es6": true
    }
  }
}

2. 创建鸿蒙原生页面

在鸿蒙项目中,创建一个原生页面(例如NativePage.hml),并确保其能够在鸿蒙系统中独立运行。

<!-- NativePage.hml -->
<div class="container">
  <text>This is a native Huawei page.</text>
</div>

3. 在uni-app中嵌入鸿蒙原生页面

使用uni-app提供的plus.webview或类似API来嵌入鸿蒙原生页面。以下是一个示例代码,展示如何在uni-app的某个页面中嵌入鸿蒙原生页面。

// 在uni-app的某个页面中
export default {
  data() {
    return {
      nativePage: null
    };
  },
  mounted() {
    // 创建一个新的Webview窗口,用于加载鸿蒙原生页面
    this.nativePage = plus.webview.create('file:///path/to/NativePage.hml', '_blank', {
      top: '0px',
      left: '0px',
      width: '100%',
      height: '100%',
      scalable: false,
      zindex: 9999 // 设置z-index以确保其层级最高
    });
    // 将Webview窗口添加到当前页面
    this.nativePage.show();
  },
  beforeDestroy() {
    // 销毁Webview窗口,释放资源
    if (this.nativePage) {
      this.nativePage.close();
    }
  }
};

注意事项

  • 路径配置:确保file:///path/to/NativePage.hml路径正确,指向鸿蒙原生页面的实际位置。
  • 权限管理:根据实际需要,配置uni-app和鸿蒙项目的权限,以确保页面能够正确加载和显示。
  • 层级管理:通过zindex属性控制Webview窗口的层级,确保其与uni页面的其他元素正确显示。

以上代码示例展示了如何在uni-app中嵌入鸿蒙原生页面,并通过配置控制其层级关系。在实际项目中,可能需要根据具体需求进行进一步的调整和优化。

回到顶部