美文网首页
通过UA判断手机的类型

通过UA判断手机的类型

作者: 广州秀才 | 来源:发表于2019-08-12 10:19 被阅读0次

先上代码:

var UA = window.navigator.userAgent.toLocaleLowerCase()
if(/iphone|ipad|ipod/.test(UA)){  //ios
}else if(/gt-|sm-|sch-/.test(UA)){  //三星
}else if(/huawei|honor/.test(UA)){  //华为
}else{  //其他手机
}  

=======================

从UA看厂商

最近手上的H5平台要兼容各种屏幕大小,又由于平台生产出的图片尺寸的限制,为了使图片不变形,不裁切,只能采用宽方向压缩的方案进行处理,具体适配方案讨论可以参看另一篇BLOG。如果有好的屏幕适配方案,可以联系我一起讨论哈。现在我们进入正题,看看各大厂商的UA: 首先来看

  • 三星:
    三星不愧是大厂,各系列产品清晰的呈现在UA里面,而且UA的规则也是非常统一的,根据不同产品线,分为GT-,SM-,SCH-开头的UA,可以通过/GT-|SM-|SCH-/ig直接选择出三星系列的手机。

  • 小米:
    小米的UA简直是一团乱,各种奇葩特征,简直不忍直视,看起来使用机型来命名的,但也不全是,比如红米有几种:redmi, HM,2014501之类的各种命名规则,对小米的UA检测,估计只能使用枚举的正则了:/HM|RedMi|Mi/ig,不过这种方式难保完整和齐全。

  • 华为:
    作为国内一线大厂,华为的UA可圈可点,和三星有些类似,华为的UA是按照产品线来进行标注识别的,主要分为huawei(华为)和honor(荣耀)两个系列,所以华为的UA识别也和简单:/huawei|honor/ig一个正则足够了。

  • OPPO:
    出乎意料的oppo手机相当的多,看来oppo的营销做得相当不错啊,不过他们家的UA已经超越小米到了令人发指的程度,同一款手机有各种不同的表达,简直崩溃,更可怕的是,根本没法通过简单正则判断是不是oppo手机。

  • vivo:
    这个厂的手机UA做的相当规范,不管什么型号,至少都是以vivo开头,这样就可以通过简单正则判断他了,比如/vivo/ig

另外一些杂牌手机,确实很多,android的痛点也就在这里了,各种碎片化,完全没有章法。

【附录】从访问日志里提取的货真价实UA

  • 三星:
    GT-I9152P Build/JLS36C
    SM-E7000 Build/KTU84P
    SM-G9200 Build/LMY47X
    GT-I9128I Build/JDQ39
    GT-I9500 Build/JDQ39
    SM-N9008V Build/LRX21V
    SM-N7506V Build/JLS36C
    SM-G3609 Build/KTU84P
    SCH-W2013 Build/IMM76D

  • 小米:
    HM NOTE 1LTE Build/KTU84P
    Redmi Note 2 Build/LRX22G
    m1 Build/KTU84P
    2014501 Build/KOT49H
    2014011 Build/HM2014011
    2013022 Build/HM2013022
    MI-ONE Plus Build/GINGERBREAD

  • 华为:
    HUAWEI G6-C00 Build/HuaweiG6-C00
    HUAWEI C8816D Build/HuaweiC8816D
    PE-TL00M Build/HuaweiPE-TL00M
    PLK-AL10 Build/HONORPLK-AL10(荣耀系列)
    Che2-TL00 Build/HonorChe2-TL00
    H30-U10 Build/HuaweiH30-U10
    SCL-AL00 Build/HonorSCL-AL00
    PE-TL20 Build/HuaweiPE-TL20
    H30-U10 Build/HuaweiH30-U10
    H60-L01 Build/HDH60-L01

  • OPPO:
    OPPO R7 Build/KTU84P
    OPPO R7t Build/KTU84P
    R7007 Build/JLS36C
    R2017 Build/JLS36C
    R6007 Build/JLS36C
    1105 Build/KTU84P
    N5117 Build/JLS36C
    M571C Build/LMY47D
    R7Plus Build/LRX21M
    X909T Build/JDQ39
    A31t Build/KTU84P
    A31 Build/KTU84P
    R8207 Build/KTU84P
    R833T Build/JDQ39

  • vivo:
    vivo Y13iL Build/KTU84P
    vivo X5Pro D Build/LRX21M
    vivo Y22L Build/JLS36C
    vivo Y13T Build/JDQ39
    vivo X5Max Build/KTU84P

  • 一加:
    ONE A2001 Build/LMY48W

  • 酷派:
    Coolpad 8297 Build/JDQ39
    SK1-02 Build/KTU84P

  • 华硕:
    ASUS_Z00ADB Build/LRX21V

  • 魅族:
    M578C Build/LMY47D
    MX5 Build/LRX22C
    M571C Build/LMY47D

  • HTC:
    HTC T528d Build/IMM76D
    HTC One X Build/IML74K
    HTC M8t Build/LRX22G

  • 联想:
    Lenovo A360t Build/KOT49H

  • 美图:
    MeituM2 Build/JDQ39
    MeituM4 Build/JDQ39

  • SOYN:
    L50t Build/17.1.E.2.67

  • uimi:
    UIMI F7 Build/KOT49H

  • 乐视:
    X600 Build/ABXCNOP5000609151S

  • 努比亚:
    NX505J Build/KVT49L
    NX511J Build/LRX22G
    NX601J Build/KVT49L

  • 金立:
    F103 Build/LRX21M
    V188 Build/KOT49H

  • 中兴:
    ZTE G718C Build/KVT49L

  • 杂牌:
    Q001 Build/KOT49H(欧沃)
    Aquaris M5 Build/LRX22G
    ZZBAO_Z5E Build/KTU84M(掌中宝)
    Nexus 4 Build/LRX22C(google)

相关文章

网友评论

      本文标题:通过UA判断手机的类型

      本文链接:https://www.haomeiwen.com/subject/rudyjctx.html