目录

华为浏览器拉起应用类型错误

问题现象

华为浏览器拉起特定类型应用时,弹窗推荐列表中出现非目标类型应用(如非支付类应用和非导航类应用),导致用户误选,影响使用体验。

背景知识

问题定位

  1. 通过如下日志multiple abilities support this deeplink可以确认:华为浏览器网页中跳转三方应用使用的是Deep Linking的方式。
    C01120/com.huawei.example.app/BMS  com.huawei.example.app  I     QueryAbilityInfosComplete before return
    A06666/com.huawei.example.app/xxx  com.huawei.example.app  I     queryAbilityInfo success
    A06666/com.huawei.example.app/xxx  com.huawei.example.app  I     multiple abilities support this deeplink
    A06666/com.huawei.example.app/xxx  com.huawei.example.app  I     queryAbilityInfo reason 0
    A06666/com.huawei.example.app/xxx  com.huawei.example.app  I     startApp result consumedClickEvent true
  2. 排查被拉起应用配置的scheme,是否配置了和自身不匹配的uris。
  3. 场景一(弹窗推荐列表中出现非支付类型应用):查看除了支付类应用以外,其他两个应用在module.json5配置文件里skills标签的uri配置,查到的配置如下:
    {
      "module": {
        // ...
        "abilities": [
          {
            // ...
            "skills": [
              {
                "entities": [
                  "entity.system.browsable"
                ],
                "actions": [
                  "ohos.want.action.viewData"
                ],
                "uris": [
                  {
                    "scheme": "xxxpay"
                  }
                ]
              }
            ]
          }
        ]
      }
    }

    场景二(弹窗推荐列表中出现非导航类型应用):查看其他两个非导航类型应用在module.json5配置文件里skills标签的uri配置,查到的配置如下:

    {
      "module": {
        // ...
        "abilities": [
          {
            // ...
            "skills": [
              {
                "entities": [
                  "entity.system.browsable"
                ],
                "actions": [
                  "ohos.want.action.viewData"
                ],
                "uris": [
                  {
                    "scheme": "***map"
                  }
                ]
              }
            ]
          }
        ]
      }
    }

分析结论

[h2]场景一

支付类应用误匹配(Deep Linking scheme冲突)

由于非支付类应用错误配置了与支付类应用相同的 scheme(如 xxxpay://),当用户在华为浏览器中访问支付相关链接并点击打开支付类应用时,系统通过Deep Linking匹配所有注册了xxxpay:// 的应用,导致弹窗中出现支付类应用和其他非支付类应用多个选项,造成用户混淆与误操作。

[h2]场景二

导航类应用误匹配(Deep Linking scheme冲突)

类似地,非导航类应用错误注册了与主流导航应用相同的 scheme(如 ***map:// 或 ***map://),当用户在华为浏览器中点击导航链接(如“导航到此位置”)时,系统会匹配所有注册了该 scheme 的应用。因此,弹窗中不仅出现主流导航应用,还混入了其他非导航类应用。

修改建议

[h2]场景一

对于非支付类应用,删除在module.json5配置文件里skills标签的uri配置的"xxxpay"等scheme配置。

[h2]场景二

对于非导航类应用,删除在module.json5配置文件里skills标签的uri配置的"***map"等scheme配置。