uniapp安卓应用于微信小程序相互跳转并且传递参数

  • Post author:
  • Post category:uniapp


应用场景,使用uniapp开发的安卓应用与小程序(一套代码),安卓应用需要使用微信登陆方式,但是微信开放平台个人用户不能够申请微信登陆接口权限,所以就借助小程序的登陆能力登陆APP


注意事项:

  • 用到了分享功能,在打包原生应用时,需要注意:首先勾选权限配置,manifest.json->App 模块权限配置->Share。然后,manifest.json->App SDK 配置->分享,按照提示填写微信分享的信息(微信开放平台,不是微信公众平台)。
  • 因为涉及到第三方 SDK 的配置,需要打包自定义基座进行测试。

    真机运行自定义基座包使用说明
  • 需要在微信开放平台开启APP跳转小程序,并管理相应的小程序


微信开放平台

-> 移动应用 -> 查看 -> 最下面的关联小程序信息,配置关联小程序


下面的登陆流程:


登陆演示:


1,APP跳转小程序代码(只贴出跳转部分代码):

<!-- #ifdef APP-PLUS -->
<button class="bottom" type="primary" @click="appWxMaLogin" withCredentials="true">跳转小程序登陆</button>
<!-- #endif -->


appWxMaLogin: function() {
	// 调用微信小程序
	console.log('调用微信小程序');

	// #ifdef APP-PLUS
	plus.share.getServices(
		function(res) {
			var sweixin = null;
			for (var i = 0; i < res.length; i++) {
				var t = res[i];
				if (t.id == 'weixin') {
					sweixin = t;
				}
			}
			if (sweixin) {
				sweixin.launchMiniProgram({
					id: 'gh_beff4d0cxxxx', // 要跳转小程序的原始ID
					path: 'pages/login_app/login_app',
					type: 0 // 微信小程序版本类型可取值: 0-正式版; 1-测试版; 2-体验版。 默认值为0。
				});
			}
		},
		function(res) {
			console.log(JSON.stringify(res));
		}
	);
	// #endif
},


注意:上面配置的id是小程序的原始ID,gh开头的,不是appId

小程序原始ID获取方法:

登录

微信公众平台

,设置->基本设置,最下边为原始ID


2,授权登陆成功,跳回APP代码

<button v-if="hiddenCommentWin" class="bottom" type="primary" open-type="launchApp" :app-parameter="userInfoJson" @error="launchAppError">返回APP</button>

:app-parameter=”userInfoJson” 是返回app需要携带的参数


3,APP解析携带的参数

由于小程序跳转回APP没有回调的方法(目前我还没研究出来),所以需要在页面的 onShow 方法监听,每次页面显示的时候都回调一次,判断是否小程序跳转进来的,下面直接上代码

/**
 * 生命周期函数--监听页面显示
 */
onShow: function() {
	that.getArguments();
},



getArguments: function() {
	// 处理第三方传入的参数
	// #ifdef APP-PLUS
	var param = plus.runtime.arguments;
	if (param != '') {
		try {
			console.log("1")
			console.log(param);
			console.log("2");
			var userInfo = JSON.parse(param); //获取小程序传输到app的数据方法
			var token = userInfo.userToken;
			console.log("3");
			console.log(token);
			if (token == "" || token == null || token == undefined) {
				console.log("4")
				return;
			}
			console.log("5");

			// 缓存用户信息,跳转到我的页面
			that.showSuccesToast('登陆成功');
			// 将用户信息保存进缓存
			uni.setStorageSync('userInfo', userInfo);

			plus.runtime.arguments = "";
			console.log("清除plus.runtime.arguments数据成功")
			// 跳转进入小程序首页
			uni.switchTab({
				url: '../my/my'
			});
		} catch (e) {
			// 若传入的参数不是JSON格式字符,需处理异常情况
			console.error(e);
			console.log('若传入的参数不是JSON格式字符,需处理异常情况。');
		}
	}
	// #endif
}

以上就是uniapp开发的安卓应用与微信小程序相互跳转的全部代码,原生开发的应用不适用



版权声明:本文为u012946310原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。