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

时间:2013-08-13 07:33:30

标签: browser mobile-safari mime-types passbook

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

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

application / vnd.apple.pkpass pkpass;

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

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

谢谢,如果你能提供帮助..

P.S。我知道Passbook for iOS7包含一个兼容的二维码扫描器 - 我需要管理使用旧版iOS的用户(以及我想链接到注册页而不是直接链接到Passbook文件的情况)

1 个答案:

答案 0 :(得分:1)

最简单的选择是将适用于Safari 6及更高版本,Chrome 23及更高版本的iOS iPhone和iPad用户代理列入白名单。缺点是你会错过已经在他们的UIWebView实现中实现了Passbook支持的应用程序。

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

  1. 应用作者可以自由更改UIWebView用户代理字符串
  2. 您将阻止已实施Passbook支持的应用的访问权限
  3. Facebook应用程序是一个很好的例子,既改变了UA字符串又实现了Passbook支持。 Twitter应用程序已更改UA字符串,但尚未实施Passbook支持。

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

    enter image description here

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