脚本宝典收集整理的这篇文章主要介绍了APP内嵌H5调用原生方法刷新token,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
场景:在某些app内嵌的H5页面,H5页面请求需要携带token,或者token过期需要刷新token,而token又不能通过url传参传入情况下,H5页面可以通过调用原生的方法,让APP给H5页面传入。
export const getAppToken = ()=>{
const promise = new PRomise((resolve,reject)=>{
//判断环境
VAR u = navigator.userAgent
var isAndROId = u.indexOf("Android") > -1 || u.indexOf("Linux") > -1; //android终端或者uc浏览器
var isiOS = !!u.match(/(i[^;]+;( U;)? CPU.+;mac OS X/); //ios终端
if (isAndroid) {
console.LOG('当前安卓环境');
// 调用安卓app方法通知app刷新token并回调本地方法
//(window.android.getToken()是与安卓开发约定好的他把getToken这个方法挂载到H5的window.android上)
window.android.getToken()
} else if (isiOS) {
console.log('当前IOS环境');
// 调用苹果app方法通知app刷新token并回调本地方法
//(与ios开发约定好的方法名getToken,.postMessage("获取token")是传参)
window.webkit.messageHandlers.getToken.postMessage("获取token");
}
//注册挂载全局方法等待app回调后resolve就可进行操作了
window.getIosToken=(token) => {
localStorage.setITem("testtkoen", token);
resolve();
};
})
return promise
}
代码原理:先判断苹果或者安卓系统,调用对应的原生APP方法,调用该方法后通知原生应用刷新token后再调用H5的方法进行传参(H5的方法挂在windows上APP可以直接调用)
用promise封装是为了获取到token后进行请求(我这app刷新token并回调回来是异步的有时间差)
整套业务逻辑(vue为例)
<template>
<div class="test">
</div>
</template>
<script>
import { getAppToken } From "../utils/getAppToken";
export default {
data() {
return {
};
},
methods: {},
created() {
getAppToken().then(() => {
//这里发送请求
});
},
};
</script>
<style>
</style>
以上是脚本宝典为你收集整理的APP内嵌H5调用原生方法刷新token全部内容,希望文章能够帮你解决APP内嵌H5调用原生方法刷新token所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。