使用 JavaScript 试用 Windows 通用应用程序时,我注意到 WinJS.Utilities.isPhone
属性不再可用,这是有道理的,因为没有理由在运行时请求它。
出于测试目的,我确实想知道是否有适当的方法来检测我的应用运行的设备。
编辑:我的问题与检测移动浏览器无关。我说的是适用于 Window 10 的全新通用 Windows 应用程序,它可以在手机、台式机、平板电脑、Xbox、HoloLEns、IoT 设备等上运行。 WinJS 有一个属性可以告诉我是否在手机上运行。那个属性(property)现在没有了。由于与“检测移动浏览器”重复,请不要关闭此问题。那不是我需要的。
最佳答案
警告:由于硬件的动态特性,任何形式的设备检测都是脆弱的——明天可能会出现一种新设备,它会破坏您应用的逻辑。最好将这些 API 仅用于遥测/分析,而不是触发运行时行为。
通常情况下,您真正想知道的是设备或应用的某些不固有地与设备系列相关的属性(此设备是否支持SystemTray
API?是否有连接键盘?窗口宽度是否超过500px?等)。
也就是说,在 Windows 10 中,您可以通过 AnalyticsInfo.VersionInfo.DeviceFamily
查询 DeviceFamily
它会告诉您诸如“移动”或“桌面”或“Xbox”等信息(其中“移动”可以是任何类别的设备 - 手机、平板电脑等)。还有一个 DeviceForm
属性可能会有所帮助,但是您不能在运行时真正依赖它来确定性地说您正在“手机”上运行。
所以基本上答案是“您可以使用这些 API 进行遥测,但不要将任何值硬编码到您的应用程序中,以免在新设备上市时出现故障。”至少,始终确保您处理返回值不是您已知的先验值的情况。
关于javascript - 是否有正确/推荐的方法来检测我在手机上运行的 UWP 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30055312/