2

我有一个 iPhone 应用程序(iOS 7.0),它通过 ExternalAccessory 库与蓝牙 2.1 传感器设备交互。如果应用程序通过任何常用方法(锁定、主页按钮、自动睡眠等)进入后台,当它尝试恢复写入应用程序用于与设备通信的NSOutputStream发现时,它会获得一个 SIGPIPE。EASession我还收到一个内部错误,原因是EAOutputStream说发生了写入错误。

从那时起,我永远无法写入输出流,它总是返回状态NOhasSpaceAvailable5(到达流结束)。

潜在的兴趣:指向显示的EAAccessory那个,但来自显示的那个。它们具有相同的属性。在这种情况下,传感器设备的链接灯保持亮起,访问“设置”>“蓝牙”屏幕将设备显示为“已连接”。强制退出应用程序并重新启动是恢复通信的唯一方法。EASessionconnected: NO[[EAAcessoryManager sharedAccessoryManager] connectedAccessories]connected: YESconnectionId

有谁知道我应该如何正确处理这个?我是否需要在应用程序进入后台之前向流发送“关闭”命令并在它返回时再次“打开”它们?

4

1 回答 1

0

我通过在后台处理过程中关闭流来解决这个问题。似乎在应用程序的后台保留一个 EASession 是一个坏主意。即使我没有得到 SIGPIPE,它也被替换为 EXEC_BAD_ACCESS。

于 2014-05-16T03:14:04.400 回答