如何检测iPhone X(Ionic - cordova应用程序)

Ern*_*avo 14 javascript cordova ionic-framework iphone-x

我需要对我的应用程序进行一些更改,但仅适用于iPhone X.

该应用程序是基于Apache Cordova(使用Ionic框架).

是否有用于检测iPhone X 的cordova插件?如果答案是否定的,那么知道用户是否在javascript中拥有iPhone X的最佳方法是什么?

谢谢

Max*_*tin 7

校验: var deviceInformation = ionic.Platform.device();

来自Ionic bundle.js

/**
     * @ngdoc method
     * @name ionic.Platform#device
     * @description Return the current device (given by cordova).
     * @returns {object} The device object.
     */
    device: function() {
      return window.device || {};
    },
Run Code Online (Sandbox Code Playgroud)

还要检查cordova-plugin-device

属性

device.cordova       // returns CDV_VERSION
 device.model
 device.platform     // always returns iOS
 device.uuid
 device.version
 device.manufacturer // always returns  Apple
 device.isVirtual    // not relevant
 device.serial 
Run Code Online (Sandbox Code Playgroud)

这个插件调用CDVDevice.m - > UIDevice所以如果你仍然无法获取iPhone X值得找到如何在Obj-C中检测它并更改的方式CDVDevice.m.


另请检查此QA:iOS设备返回不同格式的设备型号,为什么?

  • @DaveAlden`iPhoneX` (4认同)
  • 使用模拟器它返回“x86”,我们如何测试它?也在看这个问题([链接](/sf/ask/3233459631/))似乎不可能检测到iPhone X (2认同)

Mad*_*oon 5

对于科尔多瓦

使用如下的cordova-plugin-device插件:

window.device.model

会给:

iPhone10,3 要么 iPhone10,6

doc

在此处输入图片说明

对于浏览器

看到这个评论


Jac*_*nkr 5

我把这个 es6 放在一起检查iphone 10及更高版本

const isIphoneX = () => {
    try {
        const iphoneModel = window.device.model;
        const m = iphoneModel.match(/iPhone(\d+),?(\d+)?/);
        const model = +m[1];

        if (model >= 10) { // is iphone X
            return true;
        }
    } catch (e) { }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

** 编辑 **

我相信我使用的cordova-plugin-device是因为我的项目不是离子应用程序。我重写了正则表达式,以便它也可以使用ionic.Platform.device().model