没有得到 CBCentralManagerStatePoweredOn 和 CBPeripheralManagerState 有什么区别?在什么情况下我们应该使用这些变量?任何人都可以通过 Objective-C 示例/代码让我理解吗?
我正在开发一个应用程序,我应该通过 Objective-C 了解我的 iPhone 设备的蓝牙电源状态。我只想要蓝牙电源状态(开/关)。
没有得到 CBCentralManagerStatePoweredOn 和 CBPeripheralManagerState 有什么区别?在什么情况下我们应该使用这些变量?任何人都可以通过 Objective-C 示例/代码让我理解吗?
我正在开发一个应用程序,我应该通过 Objective-C 了解我的 iPhone 设备的蓝牙电源状态。我只想要蓝牙电源状态(开/关)。
基本概要:
CBCentralManagerState
是一个表示当前状态的枚举CBCentralManager
。CBCentralManager
负责扫描和连接外部设备。仅CBCentralManagerStatePoweredOn
当设备具有支持 LE 的硬件并且用户已授予应用程序权限时才适用。
CBCentralManagerStateUnknown State unknown, update imminent.
CBCentralManagerStateResetting The connection with the system service was momentarily lost, update imminent.
CBCentralManagerStateUnsupported The platform doesn't support the Bluetooth Low Energy Central/Client role.
CBCentralManagerStateUnauthorized The application is not authorized to use the Bluetooth Low Energy Central/Client role.
CBCentralManagerStatePoweredOff Bluetooth is currently powered off.
CBCentralManagerStatePoweredOn Bluetooth is currently powered on and available to use.
CBPeripheralManagerState
是一个表示状态的枚举CBPeripheralManager
。CBPeripheralManager
控制向该地区的其他 LE 设备宣传和显示手机本身的能力。(即CBPeripheralManager
允许您模拟 a CBPeripheral
)。同样,只有CBPeripheralManagerStatePoweredOn
在用户之前明确授予权限并且设备具有支持 LE 的硬件时才会如此。
CBPeripheralManagerStateUnknown State unknown, update imminent.
CBPeripheralManagerStateResetting The connection with the system service was momentarily lost, update imminent.
CBPeripheralManagerStateUnsupported The platform doesn't support the Bluetooth Low Energy Peripheral/Server role.
CBPeripheralManagerStateUnauthorized The application is not authorized to use the Bluetooth Low Energy Peripheral/Server role.
CBPeripheralManagerStatePoweredOff Bluetooth is currently powered off.
CBPeripheralManagerStatePoweredOn Bluetooth is currently powered on and available to use.
CBPeripheralManager
重要提示:如果您不设置和CBCentralManager
委托,这些状态都不会更新。只有这样,您才会收到相应的委托回调,您可以在其中检查中央和外围设备的状态。
- (void)centralManagerDidUpdateState:(CBCentralManager *)central
和
- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral;
为什么要创建一个新问题?
我使用的(嗯,或多或少,我简化了它)。在进行扫描之前,我将其称为:if ([self isBLECapableHardware]){[self startScan)];}
与.managerBLE
CBCentralManager
-(BOOL)isBLECapableHardware
{
BOOL isBLECapable = FALSE;
switch ([managerBLE state])
{
case CBCentralManagerStateUnsupported:
isBLECapable = FALSE;
break;
case CBCentralManagerStateUnauthorized:
isBLECapable = FALSE;
break;
case CBCentralManagerStatePoweredOff:
isBLECapable = FALSE;
break;
case CBCentralManagerStatePoweredOn:
isBLECapable = TRUE;
break;
case CBCentralManagerStateResetting:
isBLECapable = FALSE;
break;
default:
break;
}
return isBLECapable;
}
因此,您检查[CBCentralManager state]
它的值可以是 CBCentralManagerStateUnsupported(等于 2)、CBCentralManagerStateUnknown(等于 0)等。
通过isBLECapableHardware,我的意思是“支持低功耗蓝牙(iPhone 4S 和更新版本,iPad 3 和更新版本, iPad mini 等有芯片) 并准备使用”。