我正在设计一个 iOS 应用程序,用户可以在其中通过蓝牙发送数据。这是我第一次在应用程序中使用蓝牙,我想知道它的最佳实践,特别是数据传输是否应该在单独的线程中处理。
一旦CBPeripheralManager
连接到订阅CBCentralManager
,发送数据的循环归结为:
while (didSend) {
NSData *blob = /* some data */
didSend = [self.manager updateValue:blob
forCharacteristic:self.characteristic
onSubscribedCentrals:nil]
}
如果这在主线程上执行,这是否一定意味着用户失去了对应用程序的控制?例如,如果用户想要通过关闭应用程序或其他方式来取消交易,我是否能够以CBPeripheralManager
某种方式告诉他们中止,或者我是否必须等到循环完成?如果后者是真的,解决这个问题的最佳方法是什么?