是否有正确/推荐的方式来检测我在手机上运行的UWP应用?

时间:2015-05-05 14:07:11

标签: javascript winjs win-universal-app

使用JavaScript试用Windows Universal应用程序我注意到WinJS.Utilities.isPhone属性不再可用,这是有道理的,因为在运行时没有理由要求它。

如果有正确的方法来检测我的应用运行的设备,我确实只想知道测试目的。

编辑:我的问题不是检测移动浏览器。我正在谈论一个全新的适用于Window 10的通用Windows应用程序,可以在手机,台式机,平板电脑,Xbox,HoloLEns,物联网设备等上运行。 WinJS有一个属性可以告诉我我是否在电话上运行。那个属性现在已经消失了。由于重复使用"检测移动浏览器",请不要关闭此问题。那不是我需要的。

3 个答案:

答案 0 :(得分:11)

警告:由于硬件的动态特性,任何形式的设备检测都是脆弱的 - 明天会出现一个新设备,这会破坏应用程序的逻辑。最好将这些API仅用于遥测/分析,而不是触发运行时行为。

通常情况下,您真正​​想知道的是设备的某些属性或与设备系列固有关联的应用(此设备是否支持SystemTray API ?是否附有键盘?窗口宽度是否超​​过500p?等。)

也就是说,在Windows 10中,您可以通过AnalyticsInfo.VersionInfo.DeviceFamily查询DeviceFamily,它会告诉您类似于"移动"或"桌面"或" Xbox"等等(#34;移动"可以是任何类别的设备 - 手机,平板电脑等)。还有一个可能有用的属性DeviceForm,但您又无法在运行时真正依赖它来确定性地说您正在运行"电话。"

所以基本上答案是"您可以使用这些API进行遥测,但不要将任何值硬编码到您的应用中,以免新设备上市时中断。"至少,始终确保您处理的情况是返回的值不是您所知道的先验。

答案 1 :(得分:1)

您还可以查看以下链接 http://www.abeautifulsite.net/detecting-mobile-devices-with-javascript/ http://www.sitepoint.com/detect-mobile-devices-jquery/

当然在stackoverflow上有一个类似的帖子,答案很好

Detecting a mobile browser

谈到Windows 10,从Winjs Github repo中提取,这就是答案。

https://github.com/winjs/winjs/issues/601#issuecomment-87137485

Answer from Github WinJS repo

答案 2 :(得分:0)

有许多JS库可以检测使用哪个平台/设备。

我个人喜欢使用这个lib:https://github.com/kaimallea/isMobile

然后,您将能够以这种方式检测移动设备:

isMobile.apple.tablet
isMobile.android.phone

等等。

如果您有自己想要实现此类lib的想法,请记住,需要一些努力才能使其保持最新状态,因为检测移动设备的方式可能会随着时间的推移而发生变化。

通常,检测用户设备的常用方法是检查查询标头。

但请记住,您不能完全依赖此信息 - 标题可能很容易修改。有关更多信息的Google User Agent

所以“为手机用户省略身份验证过程”非常坏主意