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

seb*_*mez 9 javascript winjs win-universal-app

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

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

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

Pet*_*SFT 12

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

通常情况下,您真正​​想知道的是设备的某些属性或与设备系列无关的应用程序(此设备是否支持SystemTrayAPI?是否连接了键盘?窗口的宽度是否超​​过500px?等等.).

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

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