我可以一次将单个 MFI 配件与两个应用程序连接吗

Posted

技术标签:

【中文标题】我可以一次将单个 MFI 配件与两个应用程序连接吗【英文标题】:Can I connect single MFI accessory with two apps at a time 【发布时间】:2014-11-17 12:02:28 【问题描述】:

我有两个具有相同 UISupportedExternalAccessoryProtocols 的应用程序。这些正在与MFI certified 设备通信。我怎么知道会话已经与同一设备上的其他应用程序一起创建。所以我可以提醒用户,你不能一次用同一个附件创建多个sessions

请帮助解决这个问题。 提前致谢。

【问题讨论】:

【参考方案1】:

我个人认为 AyBayBay 的回答无效,因为您用“ios 标签”标记了您的问题,并且此平台不支持 NSDistributedNotificationCenter。 (有一个低级的 api 可以做到这一点,但我认为它在一个私有框架中)

如果您假装将您的应用程序定位到 iOS8+,最简单的方法是使用 iOS8 的 AppExtensions 功能。我做了一些测试,在我的应用程序中创建了一个会话,并使用以下方式从另一个应用程序向设备发送信息。

some app -> app extension -> my app connected with ext.device -> ext.device

所以我很确定您可以检查会话是否打开并将此信息返回给调用者应用程序。

仅供参考:要将信息传递给另一个应用程序,您也可以使用 URLSchemes 或 UIPasteboard,但这两种行为的方式与 AppExtensions 不同,我认为它不适合您的情况。也许它可以帮助别人......

【讨论】:

【参考方案2】:

当一个应用程序连接并与您的 MFI 设备建立会话时,您可以向 NSDistributedNotificationCenter 发布通知。您的其他应用程序可以订阅和侦听此消息,在接收它并在其 runLoop 中处理它(当它返回到前台时)时,您可以拥有阻止它同时创建会话的代码。您将不得不对此进行一些试验,但可以做到。

【讨论】:

以上是关于我可以一次将单个 MFI 配件与两个应用程序连接吗的主要内容,如果未能解决你的问题,请参考以下文章

是否可以检测 iPhone 上的非 MFI 配件?

MFI 可以实现啥?

EADemo 代码中的协议字符串名称

iOS 设备与外部配件(Lightning)通讯

CoreBluetooth 和 MFi

如果蓝牙设备不在 MFi 程序中,iPhone 至少可以发现该设备吗?