HarmonyOS 如何在浏览器唤起app

如何在浏览器打开h5页面,点击打开app唤起app。

HarmonyOS
2024-09-05 09:44:55
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
superinsect

浏览器支持Deeplink链接的打开能力。应用想要响应Deeplink拉起,需要注册viewData action和scheme+host,这样才能匹配到。如果有多个应用注册了相同的scheme+host,就会拉起应用选择框,让用户选择某个应用。Deeplink响应的声明,需要在module.json5文件的接收Ability中skills项中增加action和uris内容:

"skills": [ 
{ 
  ... 
  "actions": [ 
  "ohos.want.action.viewData" // 声明Deeplink接收的Action,这个是固定的 
  ... 
  ], 
  "uris": [ 
  { 
    "scheme": "store",  // scheme尽量做到唯一 ,仅设置此协议头就可以跳转 
  "host": "test.huawei.com" // host不与其他应用相同,这样可以减少冲突 
  } 
  ... 
  ] 
  ... 
} 
]
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

需要注意deeplink链接的scheme协议头必须网页拉起的链接的应用配置的保持一致。

另外浏览器不会对deeplink链接做任何解析或处理,只会原封不动的传递给拉起的应用。因此第三方应用只需要自己的网页端和应用端协商好url规则,自己去做解析打开对应页面即可

webview Deeplink拉起应用示例:

import web_webview from '@ohos.web.webview'; 
import { common, Want } from '@kit.AbilityKit'; 
 
@Entry 
@Component 
struct WebPage { 
  controller: web_webview.WebviewController = new web_webview.WebviewController() 
 
  build() { 
    Row() { 
      Column() { 
        Web({ src: $rawfile('local.html'), controller: this.controller }) 
          .onLoadIntercept((event) => { 
            if (event) { 
              let url: string = event.data.getRequestUrl(); 
              console.log(url) 
              // 判断链接是否为拨号链接 
              if (url.indexOf('store://') === 0) { 
                // 跳转拨号界面 
                const want: Want = { 
                  uri: 'store://appgallery.huawei.com/app/detail?id=xxxx' 
                } 
                const context = getContext(this) as common.UIAbilityContext; 
                context.startAbility(want).then(() => { 
                  //拉起成功 
                }).catch(() => { 
                }) 
                return true; 
              } 
            } 
            return false; 
          }) 
          .domStorageAccess(true) 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
}
<!DOCTYPE html> 
  <html> 
  <head> 
  <meta charset="utf-8"> 
  <title>测试页面</title> 
  <script> 
  function goToLink() { 
    window.open('store://appgallery.huawei.com/app/detail?id=xxxx') 
  } 
  </script> 
  </head> 
  <body> 
  <div align="center"> 
  <button type="button" id="btn_navi" onclick="goToLink()">跳转应用市场</button> 
  </div> 
  </body> 
  </html>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
分享
微博
QQ
微信
回复
2024-09-05 15:58:36
相关问题
HarmonyOS浏览器scheme链接唤起APP问题
2169浏览 • 1回复 待解决
HarmonyOS 浏览器访问H5,并唤起App
1059浏览 • 1回复 待解决
安卓App或者浏览器如何跳转鸿蒙App
10758浏览 • 1回复 待解决
HarmonyOS 浏览器不能通过scheme拉起app
1666浏览 • 1回复 待解决
HarmonyOS 启动默认浏览器
1589浏览 • 1回复 待解决
浏览器应用应该怎样拉起?
1243浏览 • 2回复 待解决
HarmonyOS webview浏览器获取定位异常
995浏览 • 1回复 待解决
浏览器下载的文件如何导入鸿蒙
8607浏览 • 1回复 待解决
HarmonyOS 浏览器真机调试问题
835浏览 • 1回复 待解决
有谁知道如何拉起浏览器应用
2469浏览 • 1回复 待解决
HarmonyOS 浏览器内无法下载charles证书
1121浏览 • 1回复 待解决
HarmonyOS applink从浏览器跳转到应用
1304浏览 • 1回复 待解决
服务卡片webview如何跳转系统浏览器
8888浏览 • 2回复 待解决