微信内引导用户使用“在浏览器打开”开发参考

微信内引导用户使用"在浏览器打开"开发参考

准备工作

准备App Linking链接

参考文档:developer.huawei.com/consumer/cn...

准备H5落地页

H5页面主要逻辑:

1、应用已安装时,通过"在浏览器打开",拉起应用详情页;

2、应用未安装时,通过"在浏览器打开",跳转系统浏览器,在浏览器中拉起应用市场下载页;

参考代码:

html 复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>test</title>
    <style>
        .container {
            display: flex;
            justify-content: center; /* 水平居中 */
            align-items: center; /* 垂直居中 */
            height: 100vh; /* 或者其他指定高度 */
        }
        .overlay {
            position: fixed; /* 固定定位 */
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, 0.5); /* 半透明黑色背景 */
            display: flex;
            justify-content: flex-end;
            align-items: flex-start;
            color: white;
            z-index: 1000; /* 确保遮罩层在其他内容之上 */
        }
    </style>
    <script>
        function isHarmonyOSWeiXin() {
            const isHarmonyOS = (ua) => /OpenHarmony/i.test(ua);
            const isMicroMessenger = (ua) => /MicroMessenger/.test(ua);
            const ua = navigator.userAgent;
            const result = isHarmonyOS(ua) && isMicroMessenger(ua); // 判别为HarmonyOS设备的微信拉端
            return result;
        }
        
        function isHarmonyOS() {
            const isHarmonyOS = (ua) => /OpenHarmony/i.test(ua);
            const ua = navigator.userAgent;
            const result = isHarmonyOS(ua); // 判别为HarmonyOS设备
            return result;
        }
        
        function showOverlay() {
            if(isHarmonyOSWeiXin()) {
                document.querySelector('.overlay').style.display = 'flex';
            } else if(isHarmonyOS()) {
                location.href = "https://appgallery.huawei.com/app/detail?id=xxx" // XXX改成应用的bundleName
            }
        }
    </script>
</head>
<body onload="showOverlay()">
    <div class="overlay" style="display: none;font-size:70px;">
        点击右上角"..." ↗<br>
        选择"在浏览器打开"
    </div>
</body>
</html>

页面效果:

识别鸿蒙UA和鸿蒙微信UA方法

微信内置浏览器的UA标识示例如下:

scss 复制代码
Mozilla/5.0 (Phone; OpenHarmony 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 ArkWeb/4.1.6.1 Mobile MicroMessenger/8.0.7.34(0xf3100722) Weixin NetType/WIFI Language/zh_CN MMWEBID/7692 MMWEBSDK/202505040007 XWEB/1140227

建议鸿蒙微信UA识别OpenHarmony+MicroMessenger,参考代码如下:

ts 复制代码
const isHarmonyOS = (ua) => /OpenHarmony/i.test(ua);
const isMicroMessenger = (ua) => /MicroMessenger/.test(ua);
const ua = navigator.userAgent;
const result = isHarmonyOS(ua) && isMicroMessenger(ua); // 判别HarmonyOS设备的微信拉端 建议鸿蒙UA识别OpenHarmony,参考代码如下:
const isHarmonyOS = (ua) => /OpenHarmony/i.test(ua);
const ua = navigator.userAgent;
const result = isHarmonyOS(ua); // 判别为HarmonyOS设备的拉端

页面跳转逻辑开发实现

用户点击页面中"打开/下载"按钮时,根据UA判断在鸿蒙微信环境中,跳转H5落地页;

ts 复制代码
const result = isHarmonyOS(ua) && isMicroMessenger(ua); // 判别为HarmonyOS设备的微信拉端  
<br/>if(result) {  
// 跳转到AppLinking落地页  
location.href = 'https://www.example.com?param=value'; // AppLinking落地页  
} else {  
// 处理其他端引导逻辑  
}

H5落地页同样根据UA判断在鸿蒙微信环境中,引导用户点击右上角更多-"在浏览器打开"按钮;

用户点击"在浏览器打开"按钮后,如应用已安装出现应用选项,用户选择后打开应用,应用根据传入的applinking参数,跳转具体详情页;

如应用未安装出现浏览器选项,用户选择后浏览器后,浏览器加载H5页面,此页面根据UA判断在鸿蒙环境中,直接跳转应用市场下载页;

相关推荐
HarderCoder33 分钟前
使用仓颉语言理解 SOLID 原则:概念、实战与踩坑总结
harmonyos
爱笑的眼睛114 小时前
HarmonyOS 应用开发深度解析:ArkTS 声明式 UI 与状态管理最佳实践
华为·harmonyos
安卓开发者4 小时前
鸿蒙Next ArkWeb进程解析:多进程架构如何提升Web体验
前端·架构·harmonyos
damo王6 小时前
鸿蒙(HarmonyOS) 历史
华为·harmonyos
爱笑的眼睛117 小时前
HarmonyOS声明式UI开发:深入ArkUI与状态管理实践
华为·harmonyos
爱笑的眼睛117 小时前
HarmonyOS 应用开发进阶:深入 Stage 模型与 ArkUI 声明式开发实践
华为·harmonyos
2501_919749037 小时前
鸿蒙:更改状态栏、导航栏颜色
华为·harmonyos
2501_919749037 小时前
鸿蒙:@Builder 和 @BuilderParam正确使用方法
华为·harmonyos
爱笑的眼睛117 小时前
HarmonyOS应用开发:深入解析Stage模型与UIAbility
华为·harmonyos
HMSCore10 小时前
Cloud Foundation Kit启动预加载,赋能喜马拉雅秒启秒开流畅体验
harmonyos