iOS8 和 Safari 不再使用蓝牙扫描仪

Posted

技术标签:

【中文标题】iOS8 和 Safari 不再使用蓝牙扫描仪【英文标题】:iOS8 and Safari no longer working with Bluetooth scanner 【发布时间】:2014-10-23 20:45:45 【问题描述】:

我有一个使用蓝牙 Opticon 扫描仪的 Web 应用程序 (http://www.opticonusa.com/products/companion-scanners)

用户点击一个字段并扫描一个条形码,然后应用程序会处理它。

ios7 和 Safari 下运行良好。

不再适用于 iOS8 和 Safari。经常(但不总是)扫描它时会去掉最后几个字符。它丢弃的字符数似乎有些随机。有时它确实有效。很奇怪。

我访问了其他网站 - yahoo.com、google.com 并扫描了他们的搜索框。表现出同样的行为。所以它并不特定于我的 Web 应用程序。

扫描到记事本或电子邮件始终有效。那里没有问题。就在 Safari 中。

但这是最奇怪的事情。我们打电话给扫描仪公司,他们说这是 Safari 特有的问题。他们无能为力。他们说下载 Chrome。

果然 - 它在 iPad 上的 Chrome 中完美运行!我想做的最后一件事是告诉我的用户群下载 Chrome。 :(

有人见过这样的吗?有什么信息或想法吗?我认为 iOS 上的其他网络浏览器无论如何都只是封装了 Safari 引擎,所以我什至不知道有什么区别。

任何有关这方面的信息将不胜感激。

谢谢!

【问题讨论】:

iOS8 中的字段似乎有很多错误。你看过这些链接吗? ***.com/questions/26149532/… applevis.com/blog/advocacy-apple-braille-ios-news/… 我认为蓝牙键盘错误可能是最适用的。我们在非 iOS 设备上使用条形码扫描仪,它显示为键盘,所以我假设蓝牙扫描仪显示为键盘,与蓝牙键盘存在相同的问题(丢失的字符)。 【参考方案1】:

在 iOS 版本 8.2 之前,Socket CHS 7Mi 扫描仪存在问题。

随着 8.3 的更新,这个问题似乎得到了解决。

【讨论】:

ios10 好像又出现了这个问题【参考方案2】:

这是 Safari 中潜在错误的症状(仅限 iOS 8)。我在 HID 模式下使用蓝牙条码扫描器时第一次遇到这个问题。使用 Notes 应用程序,我可以非常快速地扫描,不会跳过/截断字符。在 Safari 中,在最简单的 Web 表单中,具有单个输入文本字段或文本区域,字符跳过/截断是间歇性的。这并非特定于条形码扫描仪。您可以使用任何蓝牙键盘重现相同的问题,前提是您可以足够快但准确地键入,以便您知道它正在跳过/截断。如果有人认为我忽略了什么,请插话!

我的发现:

我刚刚在 iPad Air 上安装了 iOS 8.2 测试版,但问题仍然存在。 这只发生在 HID 模式下配对的蓝牙键盘上。 我在扫描时跟踪了键盘事件,这就是我发现的。 textinput 事件会针对前几个字符触发,但不会针对其余字符触发。所以我试着扫描这个文本:LOT00002。但是“T”和“2”被省略了,因为在按键事件之后没有触发 TEXTINPUT 事件。 看到粗线...

keydown keyCode=76 (L) which=76 (L) charCode=0

keypress keyCode=76 (L) which=76 (L) charCode=76 (L)

textInput 数据=L

keyup keyCode=0 which=0 charCode=0

keydown keyCode=79 (O) which=79 (O) charCode=0

keypress keyCode=79 (O) which=79 (O) charCode=79 (O)

keyup keyCode=0 which=0 charCode=0

textInput 数据=O

keydown keyCode=84 (T) which=84 (T) charCode=0

keypress keyCode=84 (T) which=84 (T) charCode=84 (T)

keyup keyCode=0 which=0 charCode=0

[MISSING textInput 事件]

keydown keyCode=48 (0) which=48 (0) charCode=0

keypress keyCode=48 (0) which=48 (0) charCode=48 (0)

textInput 数据=0

keyup keyCode=0 which=0 charCode=0

keydown keyCode=48 (0) which=48 (0) charCode=0

keypress keyCode=48 (0) which=48 (0) charCode=48 (0)

keyup keyCode=0 which=0 charCode=0

textInput 数据=0

keydown keyCode=48 (0) which=48 (0) charCode=0

keypress keyCode=48 (0) which=48 (0) charCode=48 (0)

textInput 数据=0

keyup keyCode=0 which=0 charCode=0

keydown keyCode=48 (0) which=48 (0) charCode=0

keypress keyCode=48 (0) which=48 (0) charCode=48 (0)

textInput 数据=0

keyup keyCode=0 which=0 charCode=0

keydown keyCode=50 (2) which=50 (2) charCode=0

keypress keyCode=50 (2) which=50 (2) charCode=50 (2)

keyup keyCode=0 which=0 charCode=0

[MISSING textInput 事件]

keydown keyCode=13 which=13 charCode=0

keypress keyCode=13 which=13 charCode=13

keyup keyCode=0 which=0 charCode=0

【讨论】:

iOS10 似乎又出现了这个问题

以上是关于iOS8 和 Safari 不再使用蓝牙扫描仪的主要内容,如果未能解决你的问题,请参考以下文章

如何使用核心蓝牙 sdk 扫描蓝牙设备?

如何设置 Web 表单以支持移动 Safari 中的 iOS 8 信用卡扫描?

iOS 8 原生信用卡扫描可以在原生应用中使用吗?

如何添加 Javascript 侦听器以捕获从蓝牙条码扫描器到 iPad 的输入?

在 iOS 8 中扫描条码并显示条码

WebView 上是不是提供扫描信用卡选项?