如何检测 iPhone X (Ionic - cordova app)
How to detect iPhone X (Ionic - cordova app)
我需要对我的应用程序进行一些更改,但仅限于 iPhone X。
该应用基于 Apache Cordova(使用 Ionic 框架)。
是否有 cordova 插件 来检测 iPhone X?如果答案是否定的,这是了解用户是否有 iPhone X in javascript?
的最佳方法
谢谢
检查:var deviceInformation = ionic.Platform.device();
/**
* @ngdoc method
* @name ionic.Platform#device
* @description Return the current device (given by cordova).
* @returns {object} The device object.
*/
device: function() {
return window.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
这个插件调用 CDVDevice.m -> UIDevice
所以如果你仍然无法获取 iPhone X
值得找到在 Obj-C 中检测它的方法并更改 CDVDevice.m
.
同时检查此质量检查:iOS devices return different format device model, why?
科尔多瓦
像这样使用 cordova-plugin-device 插件:
window.device.model
将给予:
iPhone10,3
或 iPhone10,6
参见doc:
对于浏览器
见
我使用内置的 ionic.Platform.device() 方法执行了以下操作。如果您已经在使用 ionic,我认为没有必要安装一个全新的插件。
let model = ionic.Platform.device().model
$scope.deviceIphonex = model.includes('iPhone10')
然后我可以在我的应用程序的任何地方使用它,并专门为 iphone X 做一些事情。
我把这个 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;
}
** 编辑 **
我相信我使用的是 cordova-plugin-device
,因为我的项目不是离子应用程序。我重写了正则表达式,因此它也可以与 ionic.Platform.device().model
一起使用。
修复@Jacksonkr 的回答并感谢@Made in Moon 提供有关 iphone10.3 和 iphone10.6 模型的信息。您可以将其用于获取设备 iphone X 及以上
export default () => {
try {
const exceptions = ['iPhone10,3', 'iPhone10,6'];
const iphoneModel = Device.model;
const m = iphoneModel.match(/iPhone(\d+),?(\d+)?/);
const model = +m[1];
if (model >= 11) {
// is iphone X
return true;
} else if (model === 10) {
// iPhone10,3 = iPhone X
// iPhone10,4 = iPhone 8
// iPhone10,5 = iPhone 8 Plus
// iPhone10,6 = iPhone Xs
return exceptions.includes(iphoneModel);
}
} catch (e) {
console.log(e);
}
return false;
};
我需要对我的应用程序进行一些更改,但仅限于 iPhone X。
该应用基于 Apache Cordova(使用 Ionic 框架)。
是否有 cordova 插件 来检测 iPhone X?如果答案是否定的,这是了解用户是否有 iPhone X in javascript?
的最佳方法谢谢
检查:var deviceInformation = ionic.Platform.device();
/**
* @ngdoc method
* @name ionic.Platform#device
* @description Return the current device (given by cordova).
* @returns {object} The device object.
*/
device: function() {
return window.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
这个插件调用 CDVDevice.m -> UIDevice
所以如果你仍然无法获取 iPhone X
值得找到在 Obj-C 中检测它的方法并更改 CDVDevice.m
.
同时检查此质量检查:iOS devices return different format device model, why?
科尔多瓦
像这样使用 cordova-plugin-device 插件:
window.device.model
将给予:
iPhone10,3
或 iPhone10,6
参见doc:
对于浏览器
见
我使用内置的 ionic.Platform.device() 方法执行了以下操作。如果您已经在使用 ionic,我认为没有必要安装一个全新的插件。
let model = ionic.Platform.device().model
$scope.deviceIphonex = model.includes('iPhone10')
然后我可以在我的应用程序的任何地方使用它,并专门为 iphone X 做一些事情。
我把这个 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;
}
** 编辑 **
我相信我使用的是 cordova-plugin-device
,因为我的项目不是离子应用程序。我重写了正则表达式,因此它也可以与 ionic.Platform.device().model
一起使用。
修复@Jacksonkr 的回答并感谢@Made in Moon 提供有关 iphone10.3 和 iphone10.6 模型的信息。您可以将其用于获取设备 iphone X 及以上
export default () => {
try {
const exceptions = ['iPhone10,3', 'iPhone10,6'];
const iphoneModel = Device.model;
const m = iphoneModel.match(/iPhone(\d+),?(\d+)?/);
const model = +m[1];
if (model >= 11) {
// is iphone X
return true;
} else if (model === 10) {
// iPhone10,3 = iPhone X
// iPhone10,4 = iPhone 8
// iPhone10,5 = iPhone 8 Plus
// iPhone10,6 = iPhone Xs
return exceptions.includes(iphoneModel);
}
} catch (e) {
console.log(e);
}
return false;
};