区分来自 MobileSafari 与 SafariViewController 的请求

Posted

技术标签:

【中文标题】区分来自 MobileSafari 与 SafariViewController 的请求【英文标题】:Differentiate requests from MobileSafari vs. SafariViewController 【发布时间】:2016-05-03 10:55:46 【问题描述】:

对于 Web 应用程序,是否有方法(客户端或服务器端)区分来自 MobileSafari 和 SafariViewController(嵌入在任何第三方应用程序中)的请求?

我需要这个,因为 SafariViewController 不支持通用链接和智能应用横幅,所以我想在内容中显示一个合适的替代方案。

我检查了 HTTP 用户代理,两者完全相同。

【问题讨论】:

这个小提琴演示报告了什么:jsfiddle.net/ThinkingStiff/6qrbn @LGSon 'browser' 适用于两者。 好的,您是否测试过navigator objects properties 以及两者之间是否存在差异? ...(我无法测试,因为我没有浏览器/设备) 这里还有 2 个可能有帮助的链接,1:ios9-universal-links-does-not-work ....2:css-hack-for-safari 我检查了 CSS 测试页 browserstrangeness.bitbucket.org/css_hacks.html#webkit 和 JS 测试页 cyscape.com/showbrow.asp?bhcp=1,它们产生了完全相同的输出。只有 HeightAvail 属性不同(TweetBot SafariVC 中为 1649,MobileSafari 中为 1487)。但我认为这个属性甚至可能从一个 SafariVC 实例更改为另一个。 【参考方案1】:

您应该测试功能,而不是测试特定客户端。查看 Modernizr https://modernizr.com/download?setclasses

如果您以“如何检测通用链接和智能应用横幅”的方式提出问题,这对于现代 Web 应用开发来说将是一个比嗅探特定客户端更有用的问题。

【讨论】:

恕我直言,这不是我的问题的答案。您可以通过发表评论(甚至否决问题)来辩论问题的有用性,但答案实际上应该解决 OP 的问题。

以上是关于区分来自 MobileSafari 与 SafariViewController 的请求的主要内容,如果未能解决你的问题,请参考以下文章

App调用safar

MobileSafari 的正确触摸按钮行为

ios的移动版Safari版本号

无法使用 MobileSafari 将生成的 pkpass 添加到 iPhone

MobileSafari(iOS Safari):有没有办法防止水平/垂直滚动“捕捉”?

JavaScript:与文化无关、不区分大小写的字符串比较