macOS Catalyst:如何使用媒体传输协议读取 USB 设备? IOUSBHost API可以吗?

Posted

技术标签:

【中文标题】macOS Catalyst:如何使用媒体传输协议读取 USB 设备? IOUSBHost API可以吗?【英文标题】:macOS Catalyst: How to read a USB device with Media Transfer Protocol? Is it possible with IOUSBHost API? 【发布时间】:2022-01-14 06:55:26 【问题描述】:

我想通过 USB 线制作一个 macOS 应用程序(Catalyst)与 Nintendo Switch 交互。我发现 Nintendo Switch 在系统设置中启动“通过 USB 连接复制到计算机”功能时会使用 MTP。

此外,我在 Apple 的开发人员文档中找到了一个 API,IOUSBHost。 (https://developer.apple.com/documentation/iousbhost)

所以我的问题是,这个 API 是否可以与 USB MTP 设备一起使用?如果没有,我是否可以找到任何替代方法来实现使用 macOS Catalyst 读取 USB MTP 设备?

【问题讨论】:

【参考方案1】:

建议您需要的交互是将文件复制到 Nintendo Switch 和从 Nintendo Switch 复制文件,我想说您实际上并不需要创建驱动程序来执行此操作,而且 IOUSBHost 对您的目的来说太深了。

在 macOS 上已经有一些 MTP 实现,我将从中着手。

尝试 libmtp:通过homebrew,使用他们的sourceforge 或在github 上分叉。

libmtp 是用 C 编写的,如果你想在 Swift 中使用它们来开发一些复杂的应用程序,你需要创建一个包装器或使用一个桥接头。

还有一些适用于 macOS 的 helpers 可能适合您,也可能不适合。

无论如何,如果您想要面向文件的交互,请专注于 MTP 库来实现您需要的东西,而不是 USB 的东西。

【讨论】:

我不知道我可以在 Catalyst 中使用 C 库,因为我只想用 Catalyst 编写我的应用程序,因为我已经有一个 iPhone 应用程序并且使用 Catalyst 可以帮助我完成 CloudKit 并进行编程进步更容易。无论如何感谢您的建议,我会检查一下。 您几乎可以在任何地方使用 C 库。要将 C 库连接到 Swift 项目,您需要两个步骤:将其添加到链接(例如,将 .a 文件的路径输入到其他链接器标志中)并将其标头添加到桥接头(***.com/questions/61231467/…)

以上是关于macOS Catalyst:如何使用媒体传输协议读取 USB 设备? IOUSBHost API可以吗?的主要内容,如果未能解决你的问题,请参考以下文章

腾讯 QQ 发布 macOS Catalyst 转制体验版

流媒体传输协议

macOS Catalyst `requestSceneSessionActivation` 需要多窗口采用

SwiftUI 将图像保存到 macOS Catalyst

苹果iOS 14代码暗示:macOS Catalyst版Messages应用将至!

网络协议 TCP和UDP可靠性传输