【入门到实战】OpenHarmony开发:H5协议拦截和处理机制

往期鸿蒙5.0全套实战文章必看:(文中附带全栈鸿蒙5.0学习资料)


介绍

在该系统中,我们支持拦截 H5 页面发出的协议请求,并通过定义相应的处理方法进行自定义处理。你可以根据需要定义协议的 scheme 和 authority,以及具体的路径(path),然后在代码中定义方法来处理这些请求

目标

我们需要拦截 H5 发出的协议(如 peakmain://page/login),并根据协议内容替换为自定义的处理方法。

协议结构

H5 协议通常包含如下格式:

scheme://authority/path
  • scheme:协议类型,例如 peakmain
  • authority:域名或 IP 地址
  • path:资源路径,例如 /page/login

导入依赖

import { Handle, HandleMethod, HandleResult, WebUrlBean } from '@peakmain/library';

1. 定义协议的 Scheme 和 Authority

在类上添加 @Handle 装饰器来定义协议的 scheme 和 authority。

@Handle参数说明

参数参数类型是否必填说明
schemestring协议类型
authoritystring域名或 IP 地址

示例

@Handle("peakmain", "page")
export class PageHandler {
  // 在这里定义方法
}

2. 定义协议的Path

在方法上添加 @HandleMethod 装饰器来指定该方法处理特定的路径

@HandleMethod 参数说明

参数参数类型是否必填说明
pathstring资源路径

示例代码

@Handle("peakmain", "page")
export class PageHandler {
  @HandleMethod("/login")
  login(bean:WebUrlBean): HandleResult {
    LogUtils.error("进入登录页面");
    return HandleResult.CONSUMED;  // 处理完后返回CONSUMED
  }
}

3. 方法参数

WebUrlBean 是拦截协议后封装的参数,包含了协议的详细信息,传递给处理方法。

WebUrlBean 参数说明

参数类型说明
schemestring访问资源的协议或机制
authoritystring域名或IP地址
pathstring资源的具体位置或路径
controllerwebview.WebviewControllerWeb的控制器,可能为空
contextUIContext上下文,可能为空
paramsWebUrlParams|nullH5给Native层的参数

WebUrlParams参数

参数类型说明
callIdstring执行的命令
dataobject参数数据

4.返回值:HandleResult

处理方法需要返回 HandleResult 枚举值,以指示协议是否已经被处理。

返回值类型说明
NOT_CONSUMEenum系统默认处理
CONSUMEDenum已处理,交给我们自己的处理方法
CONSUMINGenum正在处理中,暂不交给系统处理

示例代码

@Handle("peakmain", "page")
export class PageHandler {
  @HandleMethod("/login")
  login(): HandleResult {
    LogUtils.error("进入登录页面");
    return HandleResult.CONSUMED;  // 表示我们已经处理了该请求,不交给系统继续处理
  }
}

注意
实体类一定一定一定要初始化,初始化的方式有两种,
①、直接new 一个实体类,如下代码

new PageHandler()

②、通过InitUtils的initWebHandle方式初始化,如下代码

InitUtils.getInstance(this.context).init().initWebHandle(
      new PageHandler(),
      new UserHandler())
    )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值