如何在 phonegap 中检查设备?实际上我需要我的应用程序仅在平板电脑或 Iphone 中运行。我需要在其他手机上阻止我的应用程序仅在 Android 平板电脑或 iphone Ipad 中运行。是否可以检查 phonegap .. ?
谢谢
如何在 phonegap 中检查设备?实际上我需要我的应用程序仅在平板电脑或 Iphone 中运行。我需要在其他手机上阻止我的应用程序仅在 Android 平板电脑或 iphone Ipad 中运行。是否可以检查 phonegap .. ?
谢谢
有几种可用的解决方案。有些是由 javascript 提供的,有些是免费的,有些是付费服务。另外,有些是服务器端,有些是客户端,但从这封邮件中,我认为您需要客户端解决方案。
现代化者-
利用很酷的新 Web 技术非常有趣,除非您必须支持落后的浏览器。Modernizr 使您可以轻松编写条件 JavaScript 和 CSS 来处理每种情况,无论浏览器是否支持某个功能。它非常适合轻松进行渐进增强。
好的 :
只有客户端,服务器端组件不存在
对于 12kb 的 javascript 框架来说,速度很快但仍然很大。由于其模块化,它可以变得更小,具体取决于您的需要。
坏的 :
只能做这么多,更少的信息然后服务器端检测。
Modernizr 本身是了解用户浏览器功能的好方法。但是,您只能在浏览器本身上访问其 API,这意味着您无法轻松地从了解服务器逻辑中的浏览器功能中受益。
例子 :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Modernizr Example</title>
<script src="modernizr.min.js"></script>
</head>
<body>
<script>
if (Modernizr.canvas) {
// supported
} else {
// no native canvas support available :(
}
</script>
</body>
</html>
有争议的是,这可能(在学术上)是检测移动设备的最糟糕的方法,但它确实有其优点。
好的 :
简单的
坏的 :
它只会告诉设备类型,但不会提供设备版本。例如,它会告诉您我们使用了 iPad,但如果它是 1,2 或 3 版,则不会。
例子 :
<script type="text/javascript">
var agent = navigator.userAgent;
var isWebkit = (agent.indexOf("AppleWebKit") > 0);
var isIPad = (agent.indexOf("iPad") > 0);
var isIOS = (agent.indexOf("iPhone") > 0 || agent.indexOf("iPod") > 0);
var isAndroid = (agent.indexOf("Android") > 0);
var isNewBlackBerry = (agent.indexOf("AppleWebKit") > 0 && agent.indexOf("BlackBerry") > 0);
var isWebOS = (agent.indexOf("webOS") > 0);
var isWindowsMobile = (agent.indexOf("IEMobile") > 0);
var isSmallScreen = (screen.width < 767 || (isAndroid && screen.width < 1000));
var isUnknownMobile = (isWebkit && isSmallScreen);
var isMobile = (isIOS || isAndroid || isNewBlackBerry || isWebOS || isWindowsMobile || isUnknownMobile);
var isTablet = (isIPad || (isMobile && !isSmallScreen));
if ( isMobile && isSmallScreen && document.cookie.indexOf( "mobileFullSiteClicked=") < 0 ) mobileRedirect();
</script>
我有关于这个主题的另一篇文章/答案。在这里找到它。
您可以使用 JavaScript 执行此操作,使用 User Agent 已在另一个答案中解释过,
但您也可以使用 Cordova/PhoneGap 设备 API
http://cordova.apache.org/docs/en/2.8.0/cordova_device_device.model.md.html#device.model
使用 var string = device.model;
字符串将包含 iOS 模型
为您提供来自本机的所有信息,以防您想知道它是 iPad 1、iPad 2 还是 iPad Mini
例如“iPad2,5”是 iPad Mini Wifi
查看此网站以获取地图信息 http://theiphonewiki.com/wiki/Models
Cordova“开箱即用”无法确定设备是否为平板电脑。
对于 iOS,通过检查用户代理字符串,可以使用简单的 Javascript 来检测设备是否是 iPad:
var isTablet = !!navigator.userAgent.match(/iPad/i);
但是,对于 Android,JS 还不够好,它需要一些原生 Java:
private boolean isTabletDevice(Context applicationContext) {
boolean device_large = ((applicationContext.getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK) >=
Configuration.SCREENLAYOUT_SIZE_LARGE);
if (device_large) {
DisplayMetrics metrics = new DisplayMetrics();
Activity activity = this.cordova.getActivity();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
if (metrics.densityDpi == DisplayMetrics.DENSITY_DEFAULT
|| metrics.densityDpi == DisplayMetrics.DENSITY_HIGH
|| metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM
|| metrics.densityDpi == DisplayMetrics.DENSITY_TV
|| metrics.densityDpi == DisplayMetrics.DENSITY_XHIGH) {
Log.d(LOG_TAG, "Is Tablet Device");
return true;
}
}
Log.d(LOG_TAG, "Is NOT Tablet Device");
return false;
}
这个插件将这两种方法封装在一个易于使用的 Android 和 iOS 包中:https ://github.com/dpa99c/phonegap-istablet 。