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

官方说明

因为需要用户主动触发才能打开 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获取到相关得数据后进行处理。

这个流程你清楚了吗?

小程序里打开app的实现过程的更多相关文章

  1. 小程序支持打开APP了 还有小程序的标题栏也可以自定义

    就在刚刚,小程序上线两个新能力——小程序支持打开APP了,小程序的标题栏区域开放自定义.用户可以在小程序里更方便地获取到APP的服务了——APP链接分享到微信,打开小程序页面后,用户从该小程序页面里, ...

  2. 小程序支持打开APP

    根据微信的官方文档,小程序支持打开APP,专门研究了下这个API有什么,官方文档地址如下 https://mp.weixin.qq.com/debug/wxadoc/dev/component/but ...

  3. 微信小程序里解决app.js onLaunch事件与小程序页面的onLoad加载前后异常问题

    使用 Promise 解决小程序页面因为需要app.js onLaunch 参数导致的请求失败 app.js onLaunch 的代码 "use strict"; Object.d ...

  4. 微信小程序与传统APP十大优劣对比

    随着微信公众平台的开放,微信端小程序涌现市场,带来很很多便利和简单的原生操作,询:微信端小程序是否会替代传统的APP应用?两者的优劣如何?我们一起来看看传统APP与微信端小程序十大优劣对比       ...

  5. 微信小程序里如何用阿里云上传视频,图片。。

    纯手写,踩了半天多的坑干出来了... 网上也有对于阿里云如何在微信小程序里使用,但是很不全,包括阿里云文档的最佳实践里. 话不多说上代码了. upvideo(){ var aliOssParams = ...

  6. 微信小程序中的app.js-清除缓存

    微信小程序中的app.js 关于小程序app.js生命周期的介绍 App(Object) App() 函数用来注册一个小程序.接受一个 Object 参数,其指定小程序的生命周期回调等. App() ...

  7. 微信小程序开发——打开另一个小程序

    微信小程序打开另一个小程序,有两种方法:1.超链接:2.点击按钮. 全局配置: 跳转到其他小程序,需要在当前小程序全局配置中配置需要跳转的小程序列表,代码如下: App.json { ... &quo ...

  8. 微信小程序、安卓APP、苹果APP对比分析

    今天的话题主要是关于微信小程序.安卓APP.苹果APP对比分析.既然是对比分析肯定是将它们一个一个说明. 本篇不涉及技术话题,只讲解微信小程序.安卓APP.苹果APP它们各自的优缺点及其应用场景. 一 ...

  9. 小程序里实现 watch 和 computed

    小程序里的自定义组件里是有数据监听器的,可以监听对应数据的变化来执行callBack,但是页面Page里没有对应的api就显的很生硬,比如某个数据变了(如切换城市)需要重新刷页面,如果不做监听,每次都 ...

随机推荐

  1. vue项目中使用了vw适配方案,引入第三方ui框架mint-ui时,适配问题解决

    问题分析: 一般第三方ui框架用的都是不同的适配方式,如果我们使用了vw适配,那么在使用mint-ui框架时,就会发现px单位会被转换成vw,从而导致样式变小的问题,如图 解决方案 网上看到了很多种解 ...

  2. Applese 涂颜色(欧拉降幂)

    链接:https://ac.nowcoder.com/acm/contest/330/E 来源:牛客网 题目描述 精通程序设计的 Applese 叕写了一个游戏. 在这个游戏中,有一个 n 行 m 列 ...

  3. ORA-14517: Subpartition of index "string.string" is in unusable state

    今天碰到个ORA-03113, 原因不明. 猜测因为某些table DDL操作过后导致index unuable的case, 然后进行analyze table, 再碰到ORA-14517.  最后通 ...

  4. zabbix 安装使用

    zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决 ...

  5. CENTOS7下安装REDIS4.0.11

    拷贝收藏私用,别无他意,原博客地址: https://www.cnblogs.com/zuidongfeng/p/8032505.html 1.安装redis 第一步:下载redis安装包 wget ...

  6. JavaSE---抽象类

    1.前言 某些情况下,父类只是知道子类应该有什么方法,而不知道具体如何实现. eg:Shape类中应该有个计算周长的方法,而不同的子类由具体不同的实现: ***解决1: 不管父类,直接在子类中定义方法 ...

  7. maya2016安装失败如何卸载重装

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  8. PHP会话管理

    Session使用 在每个页面中使用session之前,必须使用session_start() 在每个session中都可以使用$_SESSION这个全局数组,在页面必须调用session_start ...

  9. [巩固C#] 一、特性是什么东东

    阅读目录   关闭   前言 特性是什么? 那么什么是“元数据”? 特性到底是什么? 我们自定义一个特性玩玩 什么是命名参数? 我们来继续要看看AttributeUsage(这个描... 自定义特性可 ...

  10. C# Label背景透明

    Label背景透明是相对于Label的Parent而言的,如果Label的Parent是一个winform,而这个winform又有一个PictureBox,现在Label放在PictureBox上, ...