web 唤起 app 笔记

唤起方式

web 唤起 app 的方式有下面三种:

  • url 唤起:
    • ios:universal link
    • android:indent
  • schema 唤起、也叫 deep link 唤起
  • 第三方唤起

url 唤起

web 可以通过某个 url 唤起目标 app,这需要 ios、android、web 三端都进行相关配置。

配置完成后的效果:web 可以通过一个 url 直接跳转到 app,app 那边也可以收到完整的跳转并进行后续操作。这个地址是一个 uri,http 协议

类似:

<a href="https://www.your_app_url.com/param=..." >你的 app url 链接,点了就能跳</a>

坑点:

  • 很多浏览器根本不屌,直接当做网页访问

相关链接:

schema 唤起、也叫 deeplink 唤起

ios 和 android 注册相关的配置,为应用生成 schema 链接。这个地址格式是 uri,但不是 http 协议。

类似:

<a href="yourappschema://path/?param=123" >你的 app schema uri 链接,点了就能跳</a>

重要提醒:schema 链接必须用户行为才可以跳转,比如用户点击链接,或者用户点击按钮,在事件中使用 location.href 进行重定向均可。非用户行为跳转 schema 链接会被禁止,例如初始化脚本就跳转,什么方式都不行,比如模拟 a 链接点击,iframe 加载,均不行。

坑点:

  • 不能自动唤起。也对,总不能自动唤起微信支付直接让你付钱吧。本来自动唤起就流氓。

相关链接:

  • https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app
  • https://developer.android.com/training/app-links/deep-linking?hl=zh-cn

第三方服务唤起

app 内置页面是可以控制浏览器跳转的,所以部分 app 不允许跳转,这些不用考虑。但是也有一部分 app 的内置页面支持向外跳转,不过需要接入 sdk。

比如微信内置页面跳转到其他 App,就需要接入微信 sdk,四端都要接:ios、android、server、web。开发量大概每个端 2 人力,联调还需要更多人力,因为边界情况总是很多。

比如下面就是一个微信内页面跳转其他 app 的用例:

<wx-open-launch-weapp
  id="launch-btn"
  appid="在微信注册的 app id"
  path="pages/home/index?user=123&action=abc"
>
  <script type="text/wxtag-template">
    <style>.btn { padding: 12px }</style>
    <button class="btn">打开应用</button>
  </script>
</wx-open-launch-weapp>

坑点:

  • 无数,根本理不完,之前接微信跳转一堆问题,地址不能有花括号,ts 不支持,样式加载失败,反正一路踩坑

相关参考:

小结

换端实际上很坑,要想做到完美的换端几乎不可能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值