WebUSB `USBDevice.configurations` 因平台而异

问题描述

我正在通过 WebUSB 在网页和热敏打印机之间建立连接。 在我的笔记本电脑(Mac、Chrome 91)上,结果如预期:显示一个设备,我可以打开它并选择一些配置。 然而,当我尝试将我的手机(Android、Chrome 91)连接到热敏打印机时,WebUSB 对象没有可供我选择的配置,因此我无法在那里使用打印机。

一个 USBDevice 在 MacOS 和 Android 上怎么会有不同的配置?

重现代码

const device = await navigator.usb.requestDevice({ filters: [{}] });
console.log(device.configurations);

这会在 MacOS 上记录 [USBConfiguration],在 Android 上记录 [](选择热敏打印机 CITIZEN CT-E651 时)。

我已经搜索了 WebUSB 规范的所有问题,但找不到这个问题的答案,而不是那里的解决方案。

解决方法

这可能是 Chrome 中的一个错误。请在 the project issue tracker 中提交问题报告。为了帮助收集更多信息,请在调用 requestDevice() 后包含 Android 设备上 chrome://device-log 中显示的任何日志输出。

要与 macOS 上的行为进行比较,请在您的 macOS 设备上访问 chrome://usb-internals,单击“设备”选项卡,找到您的设备并单击“检查”按钮,然后单击“获取配置” Descriptor”按钮并将结果页面的屏幕截图附加到您提交的问题中。