我正在尝试通过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的任何线索?
答案 0 :(得分: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 年后仍然如此)。此外,可能还有其他方法可以检测到这一点,因为它似乎也不支持视频。