我一直试图找到一种针对华为移动设备的方法,这样我就可以将它们重定向到华为应用商店,但似乎找不到解决方案。到目前为止,我想到的方法是编写一个正则表达式来检查从navigator.userAgent对象返回的字符串中的HUAWEI | Huawei | huawei。但我不确定它是否能在所有这样的设备上工作,尽管我是这样想的,看看这些sample userAgents,有没有模拟器或类似浏览器堆栈的东西来试一下?
发布于 2021-02-05 09:36:05
您可以通过查询用户代理来判断当前设备是否为华为手机。
目前,华为浏览器提供基于HMS或GMS设备类型的UAs。以下是示例(浏览器版本号、HMS版本号、GMS版本号和设备信息将相应更改):
Mozilla/5.0 (Linux;Android 6.0.1;LYA-al00;HMSCore/4.0.0 GMS/10.4 ) AppleWebKit/537.36 (KHTML,如Gecko) Chrome/70.0.3538.64华为浏览器/10.0.3.102 Mobile Safari/537.36
,则以下为示例:
Mozilla/5.0 (Linux;Android 6.0.1;LYA-al00;HMSCore/4.0.0) AppleWebKit/537.36 (KHTML,如Gecko) Chrome/70.0.3538.64华为浏览器/10.0.3.102 Mobile Safari/537.36
Mozilla/5.0 (Linux;Android 6.0.1;LYA-al00;GMS/10.4) AppleWebKit/537.36 (KHTML,如Gecko) Chrome/70.0.3538.64华为浏览器/10.0.3.102 Mobile Safari/537.36
Mozilla/5.0 (Linux;Android 6.0.1;LYA-AL00 ) AppleWebKit/537.36 (KHTML,如壁虎) Chrome/70.0.3538.64华为浏览器/10.0.3.102 Mobile Safari/537.36
发布于 2021-02-04 23:41:01
我不知道如何针对特定类型的手机,但您可以测试用户代理字符串:
/**
* Determine the mobile operating system.
* This function returns one of 'iOS', 'Android', 'Windows Phone', or 'unknown'.
*
* @returns {String}
*/
function getMobileOperatingSystem() {
var userAgent = navigator.userAgent || navigator.vendor || window.opera;
// Windows Phone must come first because its UA also contains "Android"
if (/windows phone/i.test(userAgent)) {
return "Windows Phone";
}
if (/android/i.test(userAgent)) {
return "Android";
}
// iOS detection from: http://stackoverflow.com/a/9039885/177710
if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
return "iOS";
}
return "unknown";
}发布于 2021-09-22 12:46:22
最简单、最短的检查方法:(不包括片剂)
navigator.userAgent.match(/"ALP-"|"AMN-"|"ANA-"|"ANE-"|"ANG-"|"AQM-"|"ARS-"|"ART-"|"ATU-"|"BAC-"|"BLA-"|"BRQ-"|"CAG-"|"CAM-"|"CAN-"|"CAZ-"|"CDL-"|"CDY-"|"CLT-"|"CRO-"|"CUN-"|"DIG-"|"DRA-"|"DUA-"|"DUB-"|"DVC-"|"ELE-"|"ELS-"|"EML-"|"EVA-"|"EVR-"|"FIG-"|"FLA-"|"FRL-"|"GLK-"|"HMA-"|"HW-"|"HWI-"|"INE-"|"JAT-"|"JEF-"|"JER-"|"JKM-"|"JNY-"|"JSC-"|"LDN-"|"LIO-"|"LON-"|"LUA-"|"LYA-"|"LYO-"|"MAR-"|"MED-"|"MHA-"|"MLA-"|"MRD-"|"MYA-"|"NCE-"|"NEO-"|"NOH-"|"NOP-"|"OCE-"|"PAR-"|"PIC-"|"POT-"|"PPA-"|"PRA-"|"RNE-"|"SEA-"|"SLA-"|"SNE-"|"SPN-"|"STK-"|"TAH-"|"TAS-"|"TET-"|"TRT-"|"VCE-"|"VIE-"|"VKY-"|"VNS-"|"VOG-"|"VTR-"|"WAS-"|"WKG-"|"WLZ-"|"YAL"/i)该方法使用this github repo.提供的设备id列表中的前缀和破折号作为指纹来检测华为设备。
即。华为P智能2019设备ids:"POT-LX1AF","POT-LX2J","POT-LX1RUA","POT-LX3"列表,但使用POT-进行检测。注意:我们假设,这个前缀对于华为是唯一的。如果使用相同前缀的不同品牌的设备发送,则该设备id也将计入华为。
关于Huawei字符串检查方法,检查该字符串并不能保证设备是否为Huawei。
如果访问者使用第三方浏览器,如Chrome,用户代理发送的不包含此字符串,则当访问者来自应用内浏览器视图时发送此字符串,如推特或Instagram (当您单击这些应用中的链接时,网站将在web视图中打开).It也会随花瓣搜索应用(华为官方搜索应用)等应用的访问发送。
https://stackoverflow.com/questions/66048820
复制相似问题