iphone - 在没有 BluetoothManager 的情况下检查 iOS 5 上的蓝牙是否被禁用

标签 iphone ios cocoa-touch gamekit core-bluetooth

我看到在 iOS 5 中,CoreBluetooth 提供了检查蓝牙是否被禁用的功能。从我看到的文档来看,它显然是针对蓝牙外设使用的。但是,我正在尝试检查蓝牙是否打开,因为我使用的是 GameKit (GKPeerPickerController),如果未启用,它将无休止地搜索蓝牙连接,这是一个问题。

我试着这样做:

CBCentralManager * manager = [[CBCentralManager alloc] init];

if (manager.state == CBCentralManagerStatePoweredOn ) {

      //go ahead with GameKit
}

这不起作用,manager.state 始终等于 null。我在这里做错了什么?或者,是否有更好的方法来检查 iPhone 上的蓝牙状态?

编辑:我不想调用任何私有(private) API,因为我会将此应用程序提交到应用程序商店。我已经编辑了我的问题标题来澄清这一点。

最佳答案

好的,我通过这样做发现:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:FALSE], CBCentralManagerScanOptionAllowDuplicatesKey, nil];
NSMutableArray * discoveredPeripherals = [NSMutableArray new];
CBCentralManager * manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
[manager scanForPeripheralsWithServices:discoveredPeripherals options:options];
[manager stopScan];

如果蓝牙关闭,系统将弹出一个警报 View ,提供打开蓝牙的选项。否则,如果它找到外围设备,它将调用相应的委托(delegate)方法,但如果该实现中没有任何内容,则您无需担心。

关于iphone - 在没有 BluetoothManager 的情况下检查 iOS 5 上的蓝牙是否被禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11534963/

相关文章:

iOS - 无法定位异常的位置

iphone - 社交框架——如何知道消息是否发送

ios - 如何修复 DVTToolchain : Failed to load toolchain using Xcode command line tools?

ios - 生成随机字母字符串的有效方法?

objective-c - Objective C 发送不兼容的 block 指针类型

iphone - 日语的 UILocalizedIndexedCollat​​ion 为联系人/音乐应用程序提供不同的排序

iphone - 如何在 UItableview 下使用 UItableview 创建 Accordion ?

iphone - 如何在我的 iPhone 应用程序中包含 512X512 图标?

jquery - iphone 上的 toggleClass 意外行为

ios - 像 iPhone 应用商店那样的 UITableView 标题?