使用 JavaScript,如何检测访客设备上是否存在 Samsung Galaxy Store

Using JavaScript, how to detect if Samsung Galaxy Store is present on the visitor's device

我正在制作要在 HTML 页面中使用的下载按钮。它将下载在 Samsung Galaxy Store 上发布的应用程序。

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

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

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

正如@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.

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