默言忆旧
默言忆旧
  • 发布:2025-03-21 17:14
  • 更新:2025-03-21 17:14
  • 阅读:78

#插件需求# 鸿蒙next 支持直接设置 UrlSchemes 跳转指定界面

分类:鸿蒙Next

uniapp打包鸿蒙next后,希望能支持设置UrlSchemes,即可直接打开指定页面。

预期目标:可以支持跟Android和iOS一样,在manifest.json中直接配置UrlSchemes,即可实现在应用内打开指定界面的功能。
实际结果:在鸿蒙Next中返回按钮后,鸿蒙云调试的手机跳转的是空白界面,安卓手机则是成功跳转到uniapp页面路由“/pages/resulte/success/index”界面。

Android和iOS示例代码主要在uniapp的 App.vue中执行:

```export default {  
    onLaunch: function(options) {  
        // #ifdef APP-PLUS  
        plus.screen.lockOrientation("portrait-primary");  
        this.checkArguments(); // 检测启动参数    
        // 重点是以下: 一定要监听后台恢复 !一定要    
        plus.globalEvent.addEventListener('newintent', (e) => {  
            this.checkArguments(); // 检测启动参数    
        });  
        // #endif  
    },  
    onHide: function() {  
        console.log('App Hide')  
        //#ifdef APP-PLUS || APP-HARMONY  
        plus.runtime.arguments = null;  
        plus.runtime.arguments = "";  
        //#endif  
    },  
    onDestroy() {  
        // 销毁监听器  
        plus.globalEvent.removeEventListener('newintent');  
    },  
    methods: {  
        checkArguments() {  
            try {  
                var args = plus.runtime.arguments;  
                if (args) {  
                    // 处理args参数,如直达到某新页面等  
                    let params = args.split("?")[1];  
                    if (params != undefined) {  
                        uni.reLaunch({  
                            url: "/pages/resulte/success/index?" + params  
                        })  
                    }  

                }  
            } catch (e) {  
                console.log('Shortcut-exception: ' + e);  
            }  
        }  
    }  
}```  

这里可以实时监控url地址,实现应用内若点击了UrlSchemes指定地址,直接跳转的功能。

为了让鸿蒙能够拉起应用,已在生成的项目entry/src/main/module.json5中,设置以下参数:

          {  
            "entities": [  
              "entity.system.home"  
            ],  
            "actions": [  
              "action.system.home"  
            ]  
          },  
          {  
            "entities": [  
              "entity.system.browsable"  
            ],  
            "actions": [  
              "ohos.want.action.viewData"  
            ],  
            "uris": [  
              {  
                "scheme": "schemeName",  
                "host": "www.test.com",  
                // path可选,表示域名服务器上的目录或文件路径,例如www.example.com/path1/中的path1  
                // 如果应用只能处理部分特定的path,则此处应该配置应用所支持的path,避免出现应用不能处理的path链接也被引流到应用中的问题  
                "path": "pages/resulte/success/index"  
              }  
            ],  
            // domainVerify须设置为true  
            "domainVerify": true  
          }, // 新增一个skill对象,用于跳转场景。如果存在多个跳转场景,需配置多个skill对象

uniapp里面是嵌套了一个webview界面,src地址是E签宝签署合同,现在签署成功后E签宝返回了一个地址:"schemeName://www.test.com/pages/resulte/success/index?tsignType=SIGN&tsignCode=0&tsignDes=签署成功",

【上述两张图片都是uniapp里面的webview嵌套展示的】。

2025-03-21 17:14 负责人:无 分享
已邀请:

要回复问题请先登录注册