H5 判断手机设备类型及不同类型调起分享

1.判断手机设备的函数

// js判断是否是苹果设备
      function checkIsAppleDevice() {
        var u = navigator.userAgent,
          app = navigator.appVersion;
        var ios = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
        var iPad = u.indexOf("iPad") > -1;
        var iPhone = u.indexOf("iPhone") > -1 || u.indexOf("Mac") > -1;
        if (ios || iPad || iPhone) {
          return true;
        } else {
          return false;
        }
      }
      //js判断是否为Android设备
      function checkIsAndroidDevice() {
        var u = navigator.userAgent;
        if (u.indexOf("Android") > -1 || u.indexOf("Adr") > -1) {
          return true;
        } else {
          return false;
        }
      } 
//js判断是否为鸿蒙系统 chos是鸿蒙webview的标识 function checkIsHarmonyOS() { var u = navigator.userAgent; if (u.indexOf("ohos") > -1) { return true; } else { return false; } }

 2.设备类型的判断

if (checkIsAppleDevice()) {
        return "ios";
} else if (checkIsHarmonyOS()) {
        return "HarmonyOS";
} else {
        return "andriod";
}

 注意点:鸿蒙系统的判断要放在安卓的判断之前,因为鸿蒙ua中包含了andriod.

3.具体分享的调用实现

function getShareUrl() {
      if ("ios" == xPhone) {
        if (
          window.webkit &&
          window.webkit.messageHandlers &&
          window.webkit.messageHandlers.requestShareUrl
        ) {
          window.webkit.messageHandlers.requestShareUrl.postMessage({
            title: $(".nickname").text() + "给你发来一张贺卡",
            summary: $(".word").text(),
            shareUrl: 'XXXXXXX', //分享地址及分享需要携带的参数
            image: $(".pic img").attr("src"),
          });
        } else {
          alert("请在xxx进行该操作");
        }
      } else if ("andriod" == xPhone) {
        if (window.Android && window.Android.requestShareUrl) {
          window.Android.requestShareUrl(
            JSON.stringify({
              title: $(".nickname").text() + "给你发来一张贺卡",
              summary: $(".word").text(),
              shareUrl: 'xxxxx', //分享链接及其携带参数
              image: $(".pic img").attr("src"),
            })
          );
        } else {
          alert("请在xx进行该操作");
        }
        return true;
      } else {
        //   鸿蒙系统
        if (window.requestShareUrl && window.requestShareUrl.call) {
          window.requestShareUrl.call(
            JSON.stringify({
              title: $(".nickname").text() + "给你发来一张贺卡",
              summary: $(".word").text(),
              shareUrl: 'xxxxxx' //分享链接及其携带参数
image: $(".pic img").attr("src"), }) ); } else { alert("请在xxx进行该操作"); } return true; } }

 

 鸿蒙原生方法的调用

if (window.JsCallbackToApp && window.JsCallbackToApp.call) {
    var result = JsCallbackToApp.call(params);
}

// JsCallbackToApp 为方法名
// params 为参数,参数格式为json字符串
// result 为返回值,非必须

注意点:鸿蒙系统与安卓系统的调用方法的不同

 

posted @ 2022-03-28 09:57  Aperio  阅读(1930)  评论(0编辑  收藏  举报