应用场景,使用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开发的安卓应用与微信小程序相互跳转的全部代码,原生开发的应用不适用