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

1.判断手机设备的函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// 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;
        }
      } <br>      //js判断是否为鸿蒙系统 chos是鸿蒙webview的标识
      function checkIsHarmonyOS() {
        var u = navigator.userAgent;
        if (u.indexOf("ohos") > -1) {
          return true;
        } else {
          return false;
        }
      }

 2.设备类型的判断

1
2
3
4
5
6
7
if (checkIsAppleDevice()) {
        return "ios";
} else if (checkIsHarmonyOS()) {
        return "HarmonyOS";
} else {
        return "andriod";
}

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

3.具体分享的调用实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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; } }

 

 鸿蒙原生方法的调用

1
2
3
4
5
6
7
if (window.JsCallbackToApp && window.JsCallbackToApp.call) {
    var result = JsCallbackToApp.call(params);
}
 
// JsCallbackToApp 为方法名
// params 为参数,参数格式为json字符串
// result 为返回值,非必须

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

 

posted @   Aperio  阅读(2591)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示