一.从UniApp端跳转小程序。
app和小程序的互相跳转需要在微信开放平台给当前小程序和app进行关联。然后在app内要跳转之前先得从app内获取分享服务需调用plus.share.getServices,在从从分享服务中读取是否有配置微信分享。有的话在使用launchMiniProgram跳转微信小程序。 具体代码
plus.share.getServices(e => {
for (let i in e) {
if ('weixin' === e[i].id) {//判断分享服务里面是否有分享到微信
this.sharewx = e[i];
this.sharewx.launchMiniProgram({
id: 'gh_********',// 需要跳转app的小程序原始id,是gh_开头。跟小程序id不一样
path: `pages/pay/appPay?userId=${this.id}&payTotal=${this.name}`,//需要跳转到小程序内的页面
type: 0 //0-正式版; 1-测试版; 2-体验版。 默认值为0
}, res => {
console.log('11111')
}, err => {
console.log('err', err)
})
}
}
});
从app跳转小程序需要传参可以在path的url 携带参数。
二.微信小程序里面获取app带过来的参数
这里面就跟小程序里面内部页面获取携带参数一样直接在onload里面获取
onLoad: function (options) { //options用于接收传递过来的参数
var that = this;
that.setData({ //this.setData的方法用于把传递过来的id转化成小程序模板语言
b_id: options.id, //id是a页面传递过来的名称,a_id是保存在本页面的全局变量 {{b_id}}方法使用
b_tu: options.name,
})
}
三.从小程序跳转app
跳转按钮代码如下, 其中app-parameter 所绑定的是你要传给app的内容,类型是string。
<button open-type="launchApp" app-parameter="wechat" binderror="launchAppError">打开APP</button>
四.app接受小程序获得的参数。
每次页面重新打开都会触发app.js的onshow()生命钩子和当前页面的onshow().所以可以看需求,只在部分页面内的onshow()添加或者在全局的onshow()里面监听。获取的参数的方法是
this.argumentsNo = plus.runtime.arguments;
但是在ios的app有时候会出现取不到值,微信小程序有传值,但是app内监听不到。所以就是可能是onshow执行的时候它实际 plus.runtime.arguments 还没有取到值。所以给它加setTimeout,让它从现在的任务队列中跳出,等都执行完再去获取值。
setTimeout(
function () {
this.argumentsNo = plus.runtime.arguments;
}.bind(this),
10
);
就这样所有的跳转的流程,就全部好了,但是我在安卓app在应用的第一次安装会出现plus.runtime.arguments,如何都取不到值,但是我只要把后台程序杀掉之后就可以正常取到值了。另外在本地调试的时候跳转跳转不了小程序,需要把pages.json里面以下代码块注释掉。
"current": 0, //当前激活的模式(list 的索引项)
"list": [{
"name": "", //模式名称
"path": "", //启动页面,必选
"query": "" //启动参数,在页面的onLoad函数里面得到
}]
}