APP内嵌H5调用原生方法刷新token

发布时间:2022-07-03 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了APP内嵌H5调用原生方法刷新token脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

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,请注明来意。