小程序里打开app的实现过程

之前开发过类似得需求,也踩了一些小坑,在这里和大家分享下,毕竟这样的需求也不在少数,基本上产品后期都会有这样的需求;

官方说明

因为需要用户主动触发才能打开 APP,所以该功能不由 API 来调用,需要用 open-type 的值设置为 launchApp 的 <button> 组件的点击来触发。

另外一个条件

当小程序从 APP 分享消息卡片的场景打开(场景值 1036),小程序才会获得打开 APP 的能力,此时用户点击按钮可以打开分享该卡片的 APP。即小程序不能打开任意 APP,只能 跳回 分享该小程序卡片的 APP,所以这里是跳回,而不是新打开。

 

在一个小程序的生命周期内,只有在特定条件下,才具有打开 APP 的能力。 打开 APP 的能力 可以理解为由小程序框架在内部管理的一个状态,为 true 则可以打开 APP,为 false 则不可以打开 APP。

 

在小程序的生命周期内,这个状态的初始值为 false,之后会随着小程序的每次打开(无论是启动还是切到前台)而改变:

  • 当小程序从 1036(App 分享消息卡片) 打开时,该状态置为 true。
  • 当小程序从 1069(App 打开小程序) 打开时,该状态置为 true。
  • 当小程序从以下场景打开时, 该状态不变,即保持上一次打开小程序时该状态的值:
    • 1038(从小程序返回,基础库 2.2.4 及以上版本支持)
    • 1089(微信聊天主界面下拉)
    • 1090(长按小程序右上角菜单唤出最近使用历史)
  • 当小程序从非以上陈列的场景打开时,该状态置为 false。

小程序端

需要将 <button> 组件 open-type 的值设置为 launchApp。如果需要在打开 APP 时向 APP 传递参数,可以设置 app-parameter 为要传递的参数。通过 binderror 可以监听打开 APP 的错误事件。

 

app端需要接入 OpenSDK,也就是微信开放平台,里面有相关的api和源码,方便app同学对接;

 

关于测试:

有时候我们没有仔细得阅读文档以为不能再测试环境测试,只能走线上测试;当时我这边就是临时建了一个测试页面,发布到了线上,后来发现有这么个字段 只需要app端进行对接就可以了 字段是 WXMiniProgramType 就可以进行本地测试或者体验版测试了。

 

总结

从小程序打开app的流程就是app分享卡片到微信,用户从微信打开,打开后小程序端会判断当前的打开场景是否是app分享过来得,然后显示我们的打开app的组件,同时可以传递一些参数给app,app获取到相关得数据后进行处理。

 

这个流程你清楚了吗?

 

posted @ 2018-09-05 13:30  follaw  阅读(1357)  评论(0编辑  收藏  举报

emai:crith_net#126.com