HarmonyOS 鸿蒙Next中H5网页链接App Linking无法直接拉起应用

HarmonyOS 鸿蒙Next中H5网页链接App Linking无法直接拉起应用 记得之前还是可以的,最近试了下,好多app都无法直接拉起应用了,而是底部统一弹出一个跳转按钮【此网站请求打开APP】,是鸿蒙系统又改策略了吗?

如下: 小红书,知乎


更多关于HarmonyOS 鸿蒙Next中H5网页链接App Linking无法直接拉起应用的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

【解决方案】

基于Deep Linking实现H5拉起应用时检测是否可以打开相关应用,已安装则拉起,未安装则打开应用市场进行下载。

1.在拉起方的module.json5文件中配置querySchemes字段,表示本应用可能会用到的scheme查询。

"module": {
  "querySchemes": [
    "hwtips",
  ],
}

2.在被拉起方的module.json文件中的skill字段中配置该应用支持的scheme协议,表示这个应用可以通过此协议打开,例如玩机技巧应用想被成功拉起则需要玩机技巧应用在工程的model.json5文件中配置abilities的skills中配置。

"skills": [
  {
    "actions": [
      "ohos.want.action.viewData"
    ],
    "uris": [
      {
        "scheme": "hwtips"
      }
    ]
  }
]

3.使用onLoadIntercept拦截前端请求,目的是获取拉起应用的url。

Web({ src: $rawfile('PullUp.html'), controller: this.controller })
  .onLoadIntercept((event) => {
    if (event) {
      let url: string = event.data.getRequestUrl();
    }
  })

4.使用canOpenLink检测是否可以打开相关应用,可以打开则拉起应用。

if (canOpen) {
  const WANT: Want = {
    uri: url
  }
  const CONTEXT= getContext(this) as common.UIAbilityContext;
  CONTEXT.startAbility(WANT).then(() => {
    // 拉起成功
  }).catch(() => {
  })
}

5.若未安装,不可打开则跳转应用市场进行下载。

if (canOpen) {
} else {
  promptAction.showDialog({
    title: $r('app.string.tips'),
    message: $r('app.string.download'),
    buttons: [{
      text: $r('app.string.confirm'),
      color: $r('app.string.fontcolor'),
    }]
  });
    .then(index => {
      const WANT: Want = {
        uri: `store://appgallery.huawei.com/app/detail?id=com.huawei.hmos.tips`
      }
      const CONTEXT = getContext(this) as common.UIAbilityContext;
      CONTEXT.startAbility(WANT).then(() => {
      })
    })
}

更多关于HarmonyOS 鸿蒙Next中H5网页链接App Linking无法直接拉起应用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


是的,这是HarmonyOS Next在应用拉起策略上的调整。系统现在要求网页跳转应用时必须通过用户主动确认,以增强安全性和隐私保护。当H5页面尝试通过App Linking拉起应用时,系统会统一展示底部弹窗,提示用户确认是否打开目标应用。

这种设计符合当前移动操作系统对用户授权透明化的趋势,能有效防止恶意网页自动拉起应用。对于开发者而言,需要确保App Linking配置正确,并在网页端做好用户引导,提示用户点击底部弹窗的确认按钮来完成应用跳转。

目前小红书、知乎等主流应用都已适配这一机制,这是系统级别的统一行为,并非个别应用的问题。

回到顶部