bridgeToAppFun.js 3.5 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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
        jsBridge.callhandler("getAuthToken", null, data => {
          if (data) {
            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
58
      console.log("ios");
leiqingsong's avatar
leiqingsong committed
59 60 61 62 63
      jsBridge.callhandler("logout");
    }
  }
  navigateBack() {
    console.log("返回");
leiqingsong's avatar
leiqingsong committed
64 65
    if (this.userAgent === "android") {
      try {
leiqingsong's avatar
leiqingsong committed
66 67 68 69
        // const home_url =
        //   "https://shop92680967.youzan.com/v2/showcase/homepage?alias=6aFsQ4vCp7";
        // location.href = home_url;
        window.android1.navigateBack();
leiqingsong's avatar
leiqingsong committed
70 71 72 73
      } catch {
        console.log("返回调用失败,都不行");
      }
    } else {
74
      console.log("去调用ios返回");
leiqingsong's avatar
leiqingsong committed
75
      jsBridge.callhandler("navigateBack");
leiqingsong's avatar
leiqingsong committed
76 77 78 79 80 81 82 83 84 85 86
    }
  }
  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
87 88 89 90 91 92 93 94 95
  redirectToLogin() {
    console.log("去登陆");
    if (this.userAgent === "android") {
      console.log("an");
      window.android.redirectToLogin();
    } else {
      jsBridge.callhandler("redirectToLogin");
    }
  }
leiqingsong's avatar
leiqingsong committed
96 97 98 99 100 101 102 103 104 105 106 107 108 109
  // 保存图片
  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("保存成功");
        }
      });
    }
  }
110 111 112 113 114
  getAppVersion() {
    let version = "";
    if (this.userAgent === "android") {
      console.log("an");
      version = window.android.getAppVersion();
leiqingsong's avatar
leiqingsong committed
115
      return version;
116
    } else {
leiqingsong's avatar
leiqingsong committed
117
      console.log("ios获取版本号");
leiqingsong's avatar
leiqingsong committed
118 119 120 121 122 123 124 125 126
      return new Promise((resolve, reject) => {
        jsBridge.callhandler("getAppVersion", null, response => {
          if (response) {
            console.log("版本号,获取到的数据", response);
            resolve(response);
          } else {
            reject("ios获取版本号失败");
          }
        });
127 128 129
      });
    }
  }
leiqingsong's avatar
leiqingsong committed
130
}
leiqingsong's avatar
leiqingsong committed
131

leiqingsong's avatar
leiqingsong committed
132
export default bridgeToAppFun;