我有一个应用程序(我不会将此应用程序提交到苹果应用程序商店),我想检查是否已打开蓝牙。如果它已打开,那么我必须显示警告。
- (void)centralManagerDidUpdateState:(CBCentralManager *)central{
switch (central.state) {
case CBCentralManagerStatePoweredOn:{
//alert view
break;
}
}
在viewdidload
我确实喜欢这个
CBCentralManager * manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
但是ipad2与ios 5.1不兼容。
问题是
central.state
始终为空。
我希望从ios 3.0到ios 6 beta可以使用相同的场景。是否有任何用于检查蓝牙状态的通用代码。
欢迎使用任何可能的代码,即使是使用私有API的代码。
答案 0 :(得分:3)
CBCentralManager
用于使用蓝牙智能(蓝牙4.0中的低能耗部分)。这是最近才在iOS / OS X设备中引入的新技术。目前支持iPhone 4s和新iPad。 iPad 2不支持这项技术。此外,CBCentralManager
仅适用于iOS 5及更高版本。
如果你想检查传统的蓝牙状态,你必须找到另一种方法来做到这一点。
在您的情况下,central.state
实际应该等于CBCentralManagerStateUnsupported
。
答案 1 :(得分:2)
您想查看BluetoothManager
API。 BluetoothManager.framework 是此API所在的私有框架。您可以在Xcode项目中链接到它,或使用dlopen
打开它( "/System/Library/PrivateFrameworks/BluetoothManager.framework/BluetoothManager"
)动态。
重要的电话会是
- (BOOL)powered;
- (BOOL)enabled;
- (BOOL)setPowered:(BOOL)arg1;
- (BOOL)setEnabled:(BOOL)arg1;
要获取BluetoothManager
的实例,请使用:
BluetoothManager* mgr = [BluetoothManager sharedInstance];
答案 2 :(得分:1)
我也没有在运行iOS7的iPhone 4上获得CBCentralManagerStateUnsupported。我和Apple开了一张错误票。