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嵌套展示的】。