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 为返回值,非必须
注意点:鸿蒙系统与安卓系统的调用方法的不同