设备检测是否为安卓系统?

20

我有一个Meteor应用程序,部署在iOS和Android设备上,我希望某些代码只在iOS设备上运行,而不在Android上运行。我知道可以使用navigator.userAgent来检测设备,但这只适用于在浏览器上运行应用程序的情况。

//如果是在浏览器上运行,则下面的方法有效

navigator.userAgent.toLowerCase().indexOf("android") > -1;

但是,如果我使用 Meteor Cordova 插件创建一个 bundle 以便在 Android 上使用,那么是否有可能检测设备,使其像本地应用程序一样工作呢?


你尝试过设备API吗?你可以检查if(device.platform == 'Android')。 - Nijil Nair
可能是Meteor设备检测Android还是iOS?的重复问题。 - Christian Fritz
2个回答

35

没有插件的必要,直接使用window对象。

window.cordova.platformId
您也可以获取操作系统的版本。
完整输出:

window.cordova.platformId

"android"

window.cordova.platformVersion

"7.0.0"


这个字段的文档在哪里?如何检查可能的值是什么? - PlsWork
这个使用起来安全吗?我们可以信赖它吗? - PlsWork
@PlsWork 这是安全的使用方式。一个新创建的 Cordova 项目有这行代码:console.log('Running cordova-' + cordova.platformId + '@' + cordova.version); 检查 cordova-app-hello-world 包。同时在你的 Cordova 项目的 "platforms" 文件夹中搜索 "platformId: platform.id",你会在不同的平台中看到它,例如 android/platform_www/cordova.js 或 ios/www/cordova.js。 - Adam Taylor

16

建议使用 Cordova设备插件,如 Nijil Nair 所示。如果需要添加插件的帮助,请参见 Meteor Cordova 。安装插件后,您可以使用 var devicePlatform = device.platform;,它会基于设备返回以下之一:

  • "Android"
  • "BlackBerry"
  • "iOS"
  • "WinCE"

1
Meteor Cordova的链接已经移动到:https://guide.meteor.com/mobile.html#introduction - ninjaPixel
并非所有版本的Windows都返回“WinCE”,请查看此处以获取更多信息:https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-device/index.html#deviceplatform。 - doubleOrt
从最近的代码文档中: /**
  • 设备平台(小写)。
  • @since 1.0.0 */ platform: 'ios' | 'android' | 'web';
- Mundi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接