【问题标题】:Checking if Bluetooth is Disabled on iOS 5 without BluetoothManager在没有蓝牙管理器的 iOS 5 上检查蓝牙是否被禁用
【发布时间】:2012-07-17 02:38:39
【问题描述】:

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

我试着这样做:

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

if (manager.state == CBCentralManagerStatePoweredOn ) {

      //go ahead with GameKit
}

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

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

【问题讨论】:

    标签: iphone ios cocoa-touch gamekit core-bluetooth


    【解决方案1】:

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

    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];
    

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

    【讨论】:

    • 这仅适用于 iphone 4S 及以上和 iPad3 及以上(不适用于任何 iPod Touch、iPad1、iPad2 等)
    【解决方案2】:

    您可以通过此link 找到问题的答案。看看吧。

    已编辑

    你检查过Game Kit Framework reference吗?

    根据苹果:

    Game Kit 让您的应用程序能够创建蓝牙 两个设备之间的连接。

    已编辑

    那就试试这个项目吧。 https://github.com/sergiomtzlosa/MultiContactsSelector-ios

    【讨论】:

    • 那是私有 API 不是吗?我认为 Apple 不会在 App Store 中允许这样做。
    • 我有,正如我在问题中所说,我成功地使用 GameKit 创建蓝牙连接。但是,问题是 GameKit 会尝试连接,无论蓝牙是打开还是关闭,所以我需要检查它的状态。
    • 感谢您提供该链接,它包含一些功能,当蓝牙被禁用时会弹出警报视图并让您选择更改它,但我不知道它在哪里或如何完毕。这似乎是系统所做的事情,因为该代码不会生成任何警报视图或类似的东西。
    猜你喜欢
    • 2013-05-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    相关资源
    最近更新 更多