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可以吗?的主要内容,如果未能解决你的问题,请参考以下文章
macOS Catalyst `requestSceneSessionActivation` 需要多窗口采用