通过 Javascript 检测 Apple Watch(例如,用户代理)

Posted

技术标签:

【中文标题】通过 Javascript 检测 Apple Watch(例如,用户代理)【英文标题】:Detect Apple Watch via Javascript (e.g., User Agent) 【发布时间】:2019-01-03 01:14:15 【问题描述】:

我正在尝试通过 javascript 检测 Apple Watch。但是,与我的 iPhone 6 相比,大小/宽度和用户代理没有给出任何明确的线索。这是 html

<!DOCTYPE html>
<html lang="en">

<head>
<title>Watch Test</title>
</head>

<body>
    <div id="width">width</div>
    <div id="height">height</div>
    <div id="user_agent">user_agent</div>

    <script type="text/javascript">
        document.getElementById("width").innerHTML = "Width is '" + screen.width + "'";
        document.getElementById("height").innerHTML = "Height is '" + screen.height + "'";
        document.getElementById("user_agent").innerHTML = "User Agent is '" + navigator.userAgent + "'";
    </script>
</body>
</html>

运行 ios 12.1.2 的 iPhone 6 显示:

Width is '320'
Height is '568'
User Agent is 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1'

而我运行 WatchOS 5.1.2 的 Apple Watch 显示:

Width is '320'
Height is '568'
User Agent is 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1'

唯一的区别是将来会更改的版本。我还查看了 navigator.platform,但在这两种设备上都是 iPhone。

关于如何检测 Apple Watch 的任何线索?

【问题讨论】:

【参考方案1】:

我在这里遇到了同样的问题,并发现了一个奇怪的(可能不是面向未来的)解决方法。 您需要检查它是否支持通过 HTML5 音频播放 AAC 音频。就目前而言,它不支持任何音频,而所有 iPhone 都支持。

  let a = document.createElement('audio');
  let supportsAAC =  !!(a.canPlayType && a.canPlayType('audio/mp4; codecs="mp4a.40.2"').replace(/no/, ''));
  let is_iphone = ['iPhone Simulator','iPhone'].includes(navigator.platform)
  return is_iphone && !supportsAAC

它肯定会在未来发生变化,但我想现在还可以(2 年后仍然如此)。此外,可能还有其他方法可以检测到这一点,因为它似乎也不支持视频。

【讨论】:

以上是关于通过 Javascript 检测 Apple Watch(例如,用户代理)的主要内容,如果未能解决你的问题,请参考以下文章

在 JavaScript 中检测 Apple Silicon mac

Apple设备检测

如何通过 Apple TV Siri Remote 检测颠簸

Apple Vision Framework:通过观察检测微笑或幸福的面孔?

检测蓝牙耳机是不是连接到 Apple Watch

获取一个 Firefox 插件来检测和模仿检查 Apple Pay 支持的尝试