检查iOS中的蓝牙状态

时间:2012-08-29 08:03:24

标签: ios bluetooth ios6 iphone-privateapi

我有一个应用程序(我不会将此应用程序提交到苹果应用程序商店),我想检查是否已打开蓝牙。如果它已打开,那么我必须显示警告。

    - (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的代码。

3 个答案:

答案 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开了一张错误票。

http://openradar.appspot.com/15564675是雷达

https://github.com/deadfalkon/btLeState存储库