uniapp写的App跳转到小程序 ,且小程序携带参数跳回

本文详细介绍了如何使用uniapp开发的App与微信小程序实现用户互通。通过App端调用微信小程序并获取openid,再利用小程序的open-type='launchApp'返回App时携带参数,实现用户数据绑定。在App的onShow中接收并处理小程序传递的参数,确保数据在两端的顺畅流动。此方法已验证适用于安卓端,但苹果端可能不适用。
摘要由CSDN通过智能技术生成

业务情景:
客户同时开发了App和小程序,都是用uniapp开发的,都绑定在了一个微信开放平台下面。
App端想要和小程序端的用户打通,用户手机号注册App登录后,会在进行提现到微信零钱这个功能时,跳转微信小程序中授权,然后拿到用户的openid,绑定微信跳转回App。
先说App跳转小程序:

  1. 先在manifest.json中 “App模块配置” share分享中配置 开放平台的appid (iOS端还需要配置universallink)
    uniapp的写法:
onLoad(){
//获取当前显示的webview
			var pages = getCurrentPages()
			var page = pages[pages.length - 1]
			var currentWebview = page.$getAppWebview()
			//调用H5+APP的扩展API
			var shares = null;
			let that = this
			var pusher = plus.share.getServices(function(s) {
				shares = {};
				for (var i in s) {
					var t = s[i];
					shares[t.id] = t;
				}
				that.sweixin = shares['weixin'];
			}, function(e) {
				console.log("获取分享服务列表失败:" + e.message);
			});
			//放入当前的webview
			currentWebview.append(pusher);
		},
}
methods:{
//跳转方法
	okBut() {
				//调用微信小程序
				this.sweixin.launchMiniProgram({
					id: 'gh_xxxxxxxxx', //要跳转小程序的原始ID
					path: '/pages/index/index?sq=true&a=' + 参数,//跳转到小程序的制定路径,以及可以携带的参数
					type: 2, //正式版:0,测试版:1,体验版:2
				})
			}
}

App跳转小程序,在小程序指定的页面,在onLoad中接收传递的参数

二:小程序跳转回App
官方文档

//**小程序中button  的open-type="launchApp"  触发跳转回App**
<button type="primary" open-type="launchApp" :app-parameter="appParameter" binderror="launchAppError" class="sqbtn f13" v-if="!isShouquan">点击返回APP </button>

在这里重点说一下小程序跳转回App携带的这个参数问题:
小程序携带参数跳转回App用 app-parameter 来进行携带,这个参数的值最好使用JSON.stringfy()来 变成字符串进行传递,可以传任何类型的数据,但是最好转变成字符串进行传递,重点是在App的哪里来接收传递的数据

//在App.vue中的onShow里面来接收这个数据
// #ifdef APP-PLUS
  		var param = plus.runtime.arguments;
  		if (param != '') {
  			try {
  				// console.log("1")
  				// console.log(param);
  				// console.log("2");
  				 //获取小程序传输到app的数据方法
  				var token = param;
  				// console.log("3");
  				// console.log(token);
  				if (token == "" || token == null || token == undefined) {
  					// console.log("4")
  					return;
  				}
  				// console.log("5");
  				 
  				// 缓存用户信息,跳转到我的页面
  				// that.showSuccesToast('登陆成功');
  				// // 将用户信息保存进缓存
  				uni.setStorageSync('token', token);
  				 
  				plus.runtime.arguments = "";
  				// console.log("清除plus.runtime.arguments数据成功")
  				// 跳转进入小程序首页
  				uni.switchTab({
  					url: '/pages/index/index'
  				});
  			} catch (e) {
  				// 若传入的参数不是JSON格式字符,需处理异常情况
  				// console.error(e);
  				// console.log('若传入的参数不是JSON格式字符,需处理异常情况。');
  			}
  		}
  		// #endif

这里我只是进行了我自己的例子,这个方法目前适用于安卓端,苹果端是不适用的。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值