【问题标题】:Is there a correct/recommended way of detecting my UWP app I'm running on a Phone?是否有正确/推荐的方法来检测我在手机上运行的 UWP 应用程序?
【发布时间】:2015-05-11 09:42:37
【问题描述】:

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

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

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

【问题讨论】:

  • 它不是重复的......我扩展了我的问题,所以每个人都明白我在问什么......请在提出答案之前阅读整个问题

标签: javascript winjs win-universal-app


【解决方案1】:

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

通常情况下,您真正​​想知道的是设备或应用程序的某些属性与设备系列固有地绑定(此设备是否支持SystemTray API?是有连接键盘吗?窗口是否超过 500px 宽?等等)。

也就是说,在 Windows 10 中,您可以通过 AnalyticsInfo.VersionInfo.DeviceFamily 查询 DeviceFamily,它会告诉您“Mobile”或“Desktop”或“Xbox”等信息(其中“Mobile”可以是任何类别的设备 - 手机、平板电脑等)。还有一个属性DeviceForm可能会有所帮助,但同样,您不能在运行时真正依赖它来确定地说您正在“手机”上运行。

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

【讨论】:

  • 这正是我正在寻找的答案!
  • 我完全理解微软试图用 UWP 做什么,但在某些地方,WinRT 丑陋的一面仍然闪耀。看看 WebAuthenticationBroker 类。它只是在电话或桌面设备上的工作方式不同。而且您总是最终会拥有两个完全(我的意思是完全)同一事物的不同实现。所以是的,绝对需要 DeviceFamily 助手。
  • 可惜UWP没有手机和平板的分离?在这种情况下,我们如何为 Surface 平板电脑设计 UI?
  • 屏幕尺寸是否不足以满足您的需求?
【解决方案2】:

您还可以查看以下链接 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 存储库中提取,这就是答案。

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

【讨论】:

  • 再一次,人们不阅读这些问题。我说的是 UWP 应用程序,而不是 Web。我想知道 WinJS 是否像以前那样带来了开箱即用的属性
  • 亲爱的 sebagomez 我检查一下,WP8.1 应用程序支持此属性msdn.microsoft.com/en-us/library/windows/apps/dn607959.aspx 也很抱歉你是对的.. 我正在部分阅读,但我想如果它不再可用您应该考虑添加一个外部库来执行验证过程
  • 我说的是 Windows 10
  • 亲爱的 sebagomez,您必须在原始问题中更加具体,并且他现在所能做的研究就是检查屏幕分辨率并从那里工作到您的验证,如此处所述github.com/winjs/winjs/issues/601
  • 感谢卡洛斯,您可以添加引用该问题的答案,我会将其标记为答案
【解决方案3】:

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

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

然后您将能够通过以下方式检测移动设备:

isMobile.apple.tablet
isMobile.android.phone

等等。

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

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

但请记住,您不能完全依赖这些信息 - 标题可能很容易修改。谷歌User Agent了解更多信息。

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

【讨论】:

  • 抱歉,我说的是 UWP 应用,而不是 Web 应用。尽管您的第一个答案也可能有效。会看看那个。谢谢
猜你喜欢
  • 1970-01-01
  • 2013-10-24
  • 2014-07-20
  • 2021-11-15
  • 2015-11-12
  • 2012-03-22
相关资源
最近更新 更多