有没有 correct/recommended 检测我的 UWP 应用程序的方法 我在 Phone 上 运行?

Is there a correct/recommended way of detecting my UWP app I'm running on a Phone?

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

我确实想知道是否有适当的方法来检测我的应用正在 运行 正在接入的设备,只是为了测试目的。

编辑: 我的问题不是检测移动浏览器。我说的是 Window 10 的全新通用 Windows 应用程序,它可以 运行 在 phone s、台式机、平板电脑、Xbox、HoloLEns、物联网设备等上. WinJS 有一个 属性 可以告诉我是否 运行ning 在 phone 上。 属性 现在不见了。由于与 "detecting mobile browser" 重复,请不要关闭此问题。那不是我需要的。

有许多 JS 库可以检测使用了哪个 platform/device。

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

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

isMobile.apple.tablet
isMobile.android.phone

等等。

如果您有自己实现此类库的想法,请记住需要付出一些努力才能保留它up-to-date,因为检测移动设备的方式可能会随着时间而改变。

一般来说,检测用户设备的常用方法是检查查询headers。

不过请记住,您不能完全依赖此信息 - headers 可能很容易被修改。 Google User Agent 了解更多信息。

所以 "omitting auth process for users with phones" 是 非常 坏主意

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

当然还有类似的 post 在 Whosebug 上有一个很好的答案

Detecting a mobile browser

并谈论 Windows 10,从 Winjs Github 存储库中提取,这里是答案。

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

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

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

也就是说,在 Windows 10 中,您可以通过 AnalyticsInfo.VersionInfo.DeviceFamily 查询 DeviceFamily,它会告诉您 "Mobile" 或 "Desktop" 或 "Xbox" 等(其中 "Mobile" 可以是任何 class 设备 - phone、平板电脑等)。还有一个 属性 DeviceForm 可能 有帮助,但是你不能在运行时真正依赖它来确定地说你是 运行 在 "a phone."

所以基本上答案是 "you can use these APIs for telemetry but don't hard-code any values into your app lest it break when a new device arrives on the market." 至少,始终确保处理返回值不是您先验知道的值的情况。