HarmonyOS鸿蒙Next中如何实现元服务中的pages和ASCF中entry里面的pages的跳转?
HarmonyOS鸿蒙Next中如何实现元服务中的pages和ASCF中entry里面的pages的跳转? 【问题描述】:ascf的pages和entry里面的pages有什么关联的吗?我可以在ascf的page里面跳到entry的pages不?
【问题现象】:不涉及
【版本信息】:不涉及
【复现代码】:包括不限于页面跳转 数据传递,相当于前端代码和原生之间的交互
【解决方案】
1.entry/src/main/ets/pages/Index.ets是整个ASCF元服务的外壳,负责拉起ascf/ascf_src/pages/index中的js/hxml/css工程文件。但是Index.ets由框架自动生成,修改后点击编译又会被覆盖。
2.不可以。但是您若想实现“相当于前端与原生的交互”,这个场景放在ASCF元服务中相当于“H5与ASCF元服务的交互”,请您参考官网文档:https://developer.huawei.com/consumer/cn/doc/architecture-guides/convenient-life-v1_2-ts_c134-0000002557101381
更多关于HarmonyOS鸿蒙Next中如何实现元服务中的pages和ASCF中entry里面的pages的跳转?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
我们是一个领取优惠券的元服务,领取优惠券的时候要打开很多第三方的网页,但是不能让每一个第三方的网页都放一个配置文件在他们的网站根目录,无法配置业务域名,所以在国内基本上是不可行的。
但是我们是海外的,测试过了,如果使用ArkWeb组件,不用配置业务域名也可以打开第三方网页。可是我们现在是uniapp写的程序,不知道怎么调用ArkWeb这个组件
- ArkWeb 组件的权限限制:ArkWeb 组件仅限使用 ArkTS 语言开发的海外元服务使用。
- ASCF 元服务的组件限制:通过 uni-app 等跨端框架开发并转换的产物属于 ASCF 元服务。在 ASCF 体系下,前端页面只能使用官方封装的 <web-view> 组件
参考链接:https://developer.huawei.com/consumer/cn/doc/atomic-ascf/components-web-view
通过App Linking方式尝试一下
import { common, OpenLinkOptions } from '@kit.AbilityKit';
@Entry
@Component
struct Index {
build() {
RelativeContainer() {
Button("Call StartAbilityForResult")
.onClick(() => {
let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
// 需要跳转的应用链接
let link: string = 'https://www.example.com';
let openLinkOptions: OpenLinkOptions = {
appLinkingOnly: true,
parameters: { demo_key: 'demo_value' }
};
try {
context.openLink(link, openLinkOptions).then(() => {
console.info(`open link success.`);
});
} catch (e) {
console.info(`open link fail.`);
}
})
}
.height('100%')
.width('100%')
}
}
在HarmonyOS Next中,元服务与entry模块的pages跳转需通过Ability级别的跳转实现。使用AbilityContext.startAbility(want),其中want的bundleName指向目标模块,abilityName指定目标Ability,并在uri参数中传入目标页面路径(如pages/index)。目标Ability需在module.json5中声明对应pages。
在HarmonyOS元服务开发中,ASCF(Atomic Service Construction Framework)的 pages 与 entry 模块中的 pages 属于同一应用的不同视图入口,本质都是页面资源。只要两者处于同一个 HAP 包内(即在同一 module 或不同 module 但打包到同一 HAP),就可以通过系统路由 router.pushUrl 直接跳转,只需指定 @bundle:模块名/路径 形式的页面路径。如果 ASCF 的页面与 entry 的页面分属不同 HAP(例如动态加载的 feature 模块),则需使用 startAbility 显式拉起对应的 Ability,并可通过 want 传递数据。注意在 module.json5 中为目标 Ability 设置正确的 exported 属性,以保证可被外部访问。总体而言,元服务内部的页面跳转与常规 ArkUI 应用一致,没有特殊限制。

