使用 JavaScript,如何检测访问者的设备上是不是存在三星 Galaxy 商店

Posted

技术标签:

【中文标题】使用 JavaScript,如何检测访问者的设备上是不是存在三星 Galaxy 商店【英文标题】:Using JavaScript, how to detect if Samsung Galaxy Store is present on the visitor's device使用 JavaScript,如何检测访问者的设备上是否存在三星 Galaxy 商店 【发布时间】:2021-11-06 01:04:19 【问题描述】:

我正在制作一个用于 html 页面的下载按钮。它将下载在三星 Galaxy Store 上发布的应用程序。

使用 javascript,我想检测用户是否安装了三星 Galaxy Store。如果已安装,我会将用户重定向到 Galaxy Store,否则会将他们重定向到我们应用的网站。

如果我们查明它是否是三星设备,如here 所述,使用 UserAgent,是否可以安全地假设该设备将始终拥有三星 Galaxy 商店。

【问题讨论】:

【参考方案1】:

对于舒尔,您可以更改 UA,例如对于WebView (webview.getSettings().setUserAgentString(...)),还有 Firefox 浏览器可以处理一些插件,包括允许更改 UA 的插件......所以它不是检测/限制任何东西的可靠方法。事实上:没有可靠的方法可以从 Web 级别检测本机应用程序的存在。更多:on newest android OS version (API30) even native apps can't check this presence (need additional permission now)

【讨论】:

userAgent 被客户端(原生应用)或浏览器插件更改即可。这种情况很少发生。此外,如果 userAgent 像这样更改,最好显示他们请求的任何 userAgent 的内容。感谢您确认无法检测已安装的应用程序。【参考方案2】:

正如@snachmsm 所指出的,无法检测到 Galaxy Store 的存在。

但是,我可以使用以下 userAgent 匹配条件来确定它是否是三星设备:

if (navigator.userAgent.match(/SAMSUNG|SGH-[I|N|T]|GT-[I|P|N]|SM-[N|P|T|Z|G]|SHV-E|SCH-[I|J|R|S]|SPH-L/i)) 
  alert("it's Samsung default browser");
  // your code for Samsung goes here

Source.

由于所有三星设备都将拥有 Galaxy Store,因此只需匹配 userAgent 就足够了。

【讨论】:

以上是关于使用 JavaScript,如何检测访问者的设备上是不是存在三星 Galaxy 商店的主要内容,如果未能解决你的问题,请参考以下文章

使用 Javascript 检测触摸屏设备

iOS/Javascript - 如何使用 Javascript 访问设备上的图像

如何使用 JavaScript 检测移动设备?

如何从 Javascript 访问加速度计/陀螺仪数据?

如何使用javascript检测android设备中的键盘关闭事件

使用 JavaScript 检测“触摸屏”设备的最佳方法是啥?