我的iOS应用程序需要能够在后台扫描(即使设备被锁定)并连接到广告外围设备。我希望应用程序在未来几天或几周内进行扫描。
我理解最终,我无法保证能得到我想要的东西,但我想确保我遵循最佳实践。
我开始在didFinishLaunchingWithOptions
扫描:
[self.centralManager scanForPeripheralsWithServices:self.services options:nil];
self.services
是我期待的服务列表。我也在centralManagerDidUpdateState
:
- (void)centralManagerDidUpdateState:(CBCentralManager *)central {
switch ([central state]) {
case CBCentralManagerStatePoweredOn:
[self.centralManager scanForPeripheralsWithServices:self.services options:nil];
...
}
}
最后,当连接的外围设备断开连接时,我会扫描外围设备。我使用的外围设备断开连接以节省电池,所以它实际上很快发生。鉴于我的项目需求,我无法重新设计设备以保持连接。当它有新的数据要发送时,它会唤醒并做广告,因此它是相当不可预测的。
我可以采用不同的方式让应用程序在后台和锁定状态下扫描更长时间吗?