首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS 8核心蓝牙未发现外设

iOS 8核心蓝牙未发现外设
EN

Stack Overflow用户
提问于 2014-08-30 20:35:35
回答 2查看 5.9K关注 0票数 14

我很难获得核心蓝牙来发现iOS 8上的外围设备。在iOS 7设备上,同样的代码也能正常工作。最初,我认为这将是一个权限问题,因为我一直在做一些iBeacon工作,iOS 8上的核心位置权限也有一些变化,但是我在网上找不到任何有帮助的地方。下面是一个示例项目的链接,它对我来说在iOS 7上运行得很好,但在iOS 8上就不行了:

https://github.com/elgreco84/PeripheralScanning

如果我在iOS 7设备上运行这个项目,它将记录我周围许多设备的广告数据。在iOS 8上,我看到的唯一输出就是中央管理器状态是“接通”的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-30 21:45:21

在你处于“开机”状态之前,开始扫描外围设备是无效的。也许在您的iOS7设备上您是幸运的时间,但代码仍然是不正确的。你的centralManagerDidUpdateState:应该是

代码语言:javascript
运行
复制
- (void)centralManagerDidUpdateState:(CBCentralManager *)central
{
    switch (central.state)
    {
        case CBCentralManagerStateUnsupported:
        {
            NSLog(@"State: Unsupported");
        } break;

        case CBCentralManagerStateUnauthorized:
        {
            NSLog(@"State: Unauthorized");
        } break;

        case CBCentralManagerStatePoweredOff:
        {
            NSLog(@"State: Powered Off");
        } break;

        case CBCentralManagerStatePoweredOn:
        {
            NSLog(@"State: Powered On");
            [self.manager scanForPeripheralsWithServices:nil options:nil];
        } break;

        case CBCentralManagerStateUnknown:
        {
            NSLog(@"State: Unknown");
        } break;

        default:
        {
        }

    }
}

并从scanForPeripheralsWithServices中删除对didFinishLaunchingWithOptions的调用。

票数 33
EN

Stack Overflow用户

发布于 2015-04-03 19:21:23

在构建一个非常基本的BLE扫描仪应用程序时,我遇到了同样的问题。添加了所需的方法"centralManagerDidUpdateState“。但什么都没起作用。

我相信这个问题与queue有关。将CBCentralManager实例放入dispatch_get_main_queue

这个代码片段可以做到这一点:

代码语言:javascript
运行
复制
       // BLE Stuff
            let myCentralManager = CBCentralManager()

        // Put CentralManager in the main queue
        required init(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
            myCentralManager = CBCentralManager(delegate: self, queue: dispatch_get_main_queue())   

          }

使用默认的单一视图xCode启动应用程序。您可以将其放入ViewController.swift文件中:

代码语言:javascript
运行
复制
   import UIKit
   import CoreBluetooth    

   class ViewController: UIViewController, CBCentralManagerDelegate, CBPeripheralDelegate {


        // BLE Stuff
        let myCentralManager = CBCentralManager()
        var peripheralArray = [CBPeripheral]() // create now empty array.


        // Put CentralManager in the main queue
        required init(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
            myCentralManager = CBCentralManager(delegate: self, queue: dispatch_get_main_queue())

        }



        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.

        }


        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }

        // Mark   CBCentralManager Methods

        func centralManagerDidUpdateState(central: CBCentralManager!) {

            updateStatusLabel("centralManagerDidUpdateState")


            switch central.state{
            case .PoweredOn:
                updateStatusLabel("poweredOn")


            case .PoweredOff:
                updateStatusLabel("Central State PoweredOFF")

            case .Resetting:
                updateStatusLabel("Central State Resetting")

            case .Unauthorized:
                updateStatusLabel("Central State Unauthorized")

            case .Unknown:
                updateStatusLabel("Central State Unknown")

            case .Unsupported:
                println("Central State Unsupported")

            default:
                println("Central State None Of The Above")

            }

        }

        func centralManager(central: CBCentralManager!, didDiscoverPeripheral peripheral: CBPeripheral!, advertisementData: [NSObject : AnyObject]!, RSSI: NSNumber!) {
                  println("Did Discover Peripheral")
            }
        }
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25586527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档