bridgeToAppFun.js 3.31 KB
Newer Older
leiqingsong's avatar
leiqingsong committed
1 2
// H5 去调用App的方法
import jsBridge from "./bridge";
leiqingsong's avatar
leiqingsong committed
3

leiqingsong's avatar
leiqingsong committed
4
class bridgeToAppFun {
leiqingsong's avatar
leiqingsong committed
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
  constructor() {
    this.userAgent = null;
    console.log(navigator.userAgent);
    if (
      navigator.userAgent.indexOf("Android") > -1 ||
      navigator.userAgent.indexOf("Adr") > -1
    ) {
      this.userAgent = "android";
    } else if (navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) {
      this.userAgent = "ios";
    } else {
      this.userAgent = "web";
    }
  }
  // 获取Token
  getAuthToken() {
leiqingsong's avatar
leiqingsong committed
21
    console.log("系统:", this.userAgent);
leiqingsong's avatar
leiqingsong committed
22 23 24 25
    if (this.userAgent === "android") {
      // android
      let token = null;
      return new Promise((resolve, reject) => {
26 27
        console.log("版本", window.android.getAppVersion());
        console.log("接收", window.android.getToken());
leiqingsong's avatar
leiqingsong committed
28
        token = window.android.getToken();
29 30
        console.log("token", token);
        if (token) {
leiqingsong's avatar
leiqingsong committed
31 32
          resolve(token);
        } else {
33
          reject("没有token");
leiqingsong's avatar
leiqingsong committed
34 35 36 37 38
        }
      });
    } else if (this.userAgent === "ios") {
      // ios
      return new Promise((resolve, reject) => {
leiqingsong's avatar
leiqingsong committed
39
        console.log("调ios的方法");
leiqingsong's avatar
leiqingsong committed
40 41
        jsBridge.callhandler("getAuthToken", null, data => {
          if (data) {
leiqingsong's avatar
leiqingsong committed
42
            // localStorage.setItem("token", data);
leiqingsong's avatar
leiqingsong committed
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
            resolve(data);
          } else {
            console.log("调用失败");
            reject("getAuthToken", data);
          }
        });
      });
    }
  }
  // 退出
  logoutToApp() {
    console.log("退出登录");
    if (this.userAgent === "android") {
      console.log("an");
      window.android.logout();
    } else {
leiqingsong's avatar
leiqingsong committed
59
      console.log("ios");
leiqingsong's avatar
leiqingsong committed
60 61 62 63 64
      jsBridge.callhandler("logout");
    }
  }
  navigateBack() {
    console.log("返回");
leiqingsong's avatar
leiqingsong committed
65 66
    if (this.userAgent === "android") {
      try {
leiqingsong's avatar
leiqingsong committed
67 68 69 70
        // const home_url =
        //   "https://shop92680967.youzan.com/v2/showcase/homepage?alias=6aFsQ4vCp7";
        // location.href = home_url;
        window.android1.navigateBack();
leiqingsong's avatar
leiqingsong committed
71 72 73 74
      } catch {
        console.log("返回调用失败,都不行");
      }
    } else {
75
      console.log("去调用ios返回");
leiqingsong's avatar
leiqingsong committed
76
      jsBridge.callhandler("navigateBack");
leiqingsong's avatar
leiqingsong committed
77 78 79 80 81 82 83 84 85 86 87
    }
  }
  showBottomBar(params) {
    console.log("隐藏底部");
    if (this.userAgent === "android") {
      console.log("an");
      window.android.showBottomBar(params);
    } else {
      jsBridge.callhandler("showBottomBar", params);
    }
  }
leiqingsong's avatar
leiqingsong committed
88 89 90 91 92 93 94 95 96
  redirectToLogin() {
    console.log("去登陆");
    if (this.userAgent === "android") {
      console.log("an");
      window.android.redirectToLogin();
    } else {
      jsBridge.callhandler("redirectToLogin");
    }
  }
leiqingsong's avatar
leiqingsong committed
97 98 99 100 101 102 103 104 105 106 107 108 109 110
  // 保存图片
  saveImage(url) {
    console.log("调用App保存图片, 图片地址", url);
    if (this.userAgent === "android") {
      console.log("an");
      window.android.appSaveImage(url);
    } else {
      jsBridge.callhandler("appSaveImage", url, response => {
        if (response) {
          console.log("保存成功");
        }
      });
    }
  }
111 112 113 114 115 116 117 118 119 120 121 122 123 124
  getAppVersion() {
    let version = "";
    if (this.userAgent === "android") {
      console.log("an");
      version = window.android.getAppVersion();
    } else {
      jsBridge.callhandler("getAppVersion", null, response => {
        if (response) {
          version = response;
        }
      });
    }
    return version;
  }
leiqingsong's avatar
leiqingsong committed
125
}
leiqingsong's avatar
leiqingsong committed
126

leiqingsong's avatar
leiqingsong committed
127
export default bridgeToAppFun;