Browser 如何测试用户是否使用应用内浏览器而不是Safari?

Browser 如何测试用户是否使用应用内浏览器而不是Safari?,browser,mobile-safari,mime-types,passbook,Browser,Mobile Safari,Mime Types,Passbook,我已经设置了一个系统,客户可以扫描链接到注册网页的二维码。输入一些信息后,客户将收到一张存折优惠券 出现问题-Passbook.pkpass文件需要发送到启用了正确MIME类型的浏览器: application/vnd.apple.pkpass Safari for iOS已配置为接受此MIME类型。然而,许多免费二维码扫描应用程序使用不支持此MIME类型的应用程序内浏览器 如何过滤http_user_agent字符串以检查客户是从Safari还是从应用程序内浏览器浏览? 如果你能帮忙,谢谢你

我已经设置了一个系统,客户可以扫描链接到注册网页的二维码。输入一些信息后,客户将收到一张存折优惠券

出现问题-Passbook.pkpass文件需要发送到启用了正确MIME类型的浏览器:

application/vnd.apple.pkpass

Safari for iOS已配置为接受此MIME类型。然而,许多免费二维码扫描应用程序使用不支持此MIME类型的应用程序内浏览器

如何过滤http_user_agent字符串以检查客户是从Safari还是从应用程序内浏览器浏览?

如果你能帮忙,谢谢你


p、 我知道iOS7的Passbook包括一个兼容的二维码扫描仪-我需要管理使用旧版本iOS的用户(以及我想链接到注册页面而不是直接链接到Passpook文件的情况)

最简单的选择是将Safari 6及以上版本的iOS iPhone和iPad用户代理列入白名单,铬23及以上。缺点是,您将错过在UIWebView实现中实现了存折支持的应用程序

全面禁止UIWebView UA字符串无效,因为:

  • 应用程序作者可以自由更改UIWebView用户代理字符串
  • 您将阻止对已实现存折支持的应用的访问
  • Facebook应用程序就是一个很好的例子,它既改变了UA字符串,又实现了存折支持。Twitter应用程序已更改UA字符串,但尚未实现存折支持

    因此,选项2可能是创建一个已知未实施支持的应用程序黑名单。扫描此QR将显示浏览器的用户代理字符串,这可能会有所帮助。关键是使用合适的正则表达式来解释操作系统和应用程序版本的变化,但要避免误报

    第三种选择是使用Javascript显示一条突出的消息,指示用户在应用程序浏览器停止响应时打开Safari中的链接,然后重定向到.pkpass捆绑包