4

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

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

应用程序/vnd.apple.pkpass pkpass;

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

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

谢谢如果你能帮忙..

ps 我知道 iOS7 的 Passbook 包含兼容的 QR 码扫描器 - 我需要管理使用旧版本 iOS 的用户(以及我想链接到注册页面而不是直接链接到 Passbook 文件的情况)

4

1 回答 1

1

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

全面禁止 UIWebView UA 字符串不会有效,因为:

  1. 应用作者可以自由更改 UIWebView 用户代理字符串
  2. 您将阻止对已实现 Passbook 支持的应用程序的访问

Facebook 应用程序是一个很好的例子,它既更改了 UA 字符串又实现了 Passbook 支持。Twitter 应用程序已更改 UA 字符串,但尚未实现 Passbook 支持。

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

在此处输入图像描述

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

于 2013-08-13T08:07:01.537 回答