APP识别拦截快应用Deeplink

国内手机基本都加入了快应用支持,在日常使用中会莫明的打开快应用连接,有时在浏览器网页时都会被拉起快应用,这对安全和体验来说造成了很大的困扰,必须限制它的这种行为。

快应用行为:Deeplink

快应用是集成在手机内的一种协议方式,我们直入主题即为:Deeplink

框架支持通过链接从外部打开应用。

  • http://hapjs.org/app/<package>/[path][?key=value]
  • https://hapjs.org/app/<package>/[path][?key=value]
  • hap://app/<package>/[path][?key=value]

参数说明:

备注:快应用内只支持通过 hap 链接打开快应用,http 和 https 链接将被当成 web 页面打开

  • package: 应用包名,必选
  • path: 应用内页面的 path,可选,默认为首页
  • key-value: 希望传给页面的参数,可选,可以有多个
import router from '@system.router'

router.push({
// 快应用内只能使用hap链接
uri: 'hap://app/com.example.quickapp/page?key=value'
})
Intent intent = new Intent(Intent.ACTION_VIEW);
// 原生App中可以使用hap、http、https三种链接
intent.setData(Uri.parse("hap://app/com.example/Detail?key1=value1&key2=value2"));
context.startActivity(intent);

快应用获取 key-value

快应用通过public定义 key 名相同的属性获取外部参数;如果参数 key 未被声明,public 不会新增这个属性,即获取不到参数值。

export default {
public: {
key: null
},
onShow() {
console.log(this.key)
}
}

通过 Deeplink 链接,直接在快应用中打开对应的 H5 页面

  • http://hapjs.org/app/<package>/[path][?___H5___=value]
  • https://hapjs.org/app/<package>/[path][?___H5___=value]
  • hap://app/<package>/[path][?___H5___=value]

参数:

参数名类型必填说明
___H5___ 1090+String通过 Deeplink 链接,快应用中打开对应的 H5 页面

示例:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("hap://app/com.example.quickapp/?___H5___=https://www.quickapp.cn/"));
context.startActivity(intent);

备注:

  • 不同的厂商对该能力可能有不同限制,使用前请和相应厂商确认。

识别快应用行为:Deeplink

如图:

APP识别拦截快应用Deeplink

我们监听访问的协议即可,识别出Deeplink的格式后进行相应的处理,很简单吧!

参考:快应用Deeplink