HarmonyOS 鸿蒙Next h5如何通过userAgent判断是否是HarmonyOS NEXT

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next h5如何通过userAgent判断是否是HarmonyOS NEXT

纯版鸿蒙上线后,h5投放到app里面,需要通过userAgent判断系统做兼容,应该如何通过userAgent进行判断?类似要区分iOS系统、Android系统和鸿蒙系统

手机和pad的userAgent都会有特定标识吗?

比如以前android手机,userAgent里面有android标识;

Mozilla/5.0 (Linux; Android 8.0.0; SM-G965U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36

HarmonyOS版本的华为手机的userAgent有android和HarmonyOS标识:

Mozilla/5.0 (Linux; Android 10; HarmonyOS; VOG-AL00; HMSCore 6.14.0.302; GMSCore 20.15.16) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.196 HuaweiBrowser/15.0.4.312 Mobile Safari/537.36

HarmonyOS版本的华为pad的userAgent则没有android和Harmony标识:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.196 Safari/537.36

14 回复

我是这么写的

export const client = judgeClient()

// 判断客户端 function judgeClient() { const u = navigator.userAgent const isAndroid = u.indexOf(‘Android’) > -1 || u.indexOf(‘Adr’) > -1 // 判断是否是 android终端 const isIOS = !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/) // 判断是否是 iOS终端 const isHarmony = u.indexOf(‘HarmonyOS’) > -1 || u.indexOf(‘ArkWeb’) > -1 // 判断是否是 鸿蒙终端 if (isAndroid) { return ‘Android’ } else if (isIOS) { return ‘iOS’ } else if (isHarmony) { return ‘Harmony’ } else { return ‘PC’ } }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

现在是不是无生效了,也用的navigator.userAgent判断,跑的时候不生效了

开机的时候显示的是power by openharmony,不知道算不算open。

我们的测试机mate60 pro UA里有OpenHarmonybiao'shi

cke_189.jpeg

OpenHarmony是开源项目,不知道能不能直接用OpenHarmony作为鸿蒙系统的标识

看到一篇文档说用ArkWeb判断,但是我也没法确认是不是所有Harmony Next的应用的web组件是不是都只能用ArkWeb组件 https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/web-default-useragent-V5

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

你的手机有申请HarmonyOS NEXT吗?

是的  next系统

  开发的app是否需要修改userAgent做适配,HarmonyOS NEXT的userAgent没有没有了android标识,估计都会被识别为iOS,否则所有页面都修改userAgent判断,这工作量有点大,而且第三方的网页还不能控制,得第三方自己适
  如果要修改userAgent做适配,有没有什么建议?

可以修改userAgent让app以为是android,把鸿蒙当成android的子集,在特殊的地方通过jsBridge判断android下是否为鸿蒙再做特殊处理。 Web().onControllerAttached(() => { /*自定义UA/ let userAgent = ‘Android’ + this.controller.getUserAgent() this.controller.setCustomUserAgent(userAgent); })

这种做法,自己的h5页面还好控制,如果是第三方h5页面,可能就会误认为这个还是android应用

第三方h5的开发者如果有空的话,会再去判断UserAgent中的 ArkWeb,如果他们不处理,那给个android状态至少大多情况下还是能以手机样式显示的。

在HarmonyOS NEXT中,如果你想通过userAgent字符串来判断是否运行在HarmonyOS NEXT环境,你需要查找特定的标识符。通常,HarmonyOS的userAgent会包含HarmonyOS或类似的字样。你可以使用JavaScript来检测navigator.userAgent字符串中是否包含这些关键字。

示例代码如下:

if (/HarmonyOS/i.test(navigator.userAgent)) {
    // 是HarmonyOS NEXT环境
} else {
    // 不是HarmonyOS NEXT环境
}

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部