当应用程序处于后台时,扫描外设(如屏幕锁定时)。

问题描述 投票:0回答:1

我有一个应用程序,它是在后台工作。我使用CBPeripheralManager广告和CBCentralManager扫描。我使用两个ıos(IOS 11.3和IOS 13.4.1)设备。第一个是广告前台和后台,第二个是扫描前台和后台。第二个是扫描前景和背景。我可以扫描。

应用程序在后台,手机被解锁 - 工作完美

应用程序在后台,手机被锁定,屏幕被点亮 - 完美的工作。

应用程序在后台,手机锁定,屏幕是关闭的 - 不工作!

* 我检查了它的广告应用程序,运行在后台显示在Android设备*。

是什么问题。请告诉我。如何解决这个问题?我想在后台同时扫描。我的代码如下。

let scanOptions = [
        CBCentralManagerScanOptionAllowDuplicatesKey: NSNumber(value: true)
    ]

let services = [CBUUID(string: "e2c56db5-dffb-48d2-b060-d0f5a71096e0")]

let advertisingData = [
        CBAdvertisementDataLocalNameKey: "xxx",
        CBAdvertisementDataServiceUUIDsKey:[CBUUID(string: "e2c56db5-dffb-48d2-b060-d0f5a71096e0")]
        ] as [String : Any]

func initLocal() {

        peripheralManager = CBPeripheralManager(delegate: self, queue: nil, options: nil)
        cbCentralManager = CBCentralManager(delegate: self, queue: nil,options: nil)

    }

func peripheralManagerDidUpdateState(_ peripheral: CBPeripheralManager) {

        if peripheral.state == .poweredOn {
            peripheralManager.startAdvertising(advertisingData)
        }
       else if peripheral.state == .poweredOff {
            peripheralManager.stopAdvertising()
        }
    }

func centralManagerDidUpdateState(_ central: CBCentralManager) {

        if central.state == .poweredOn{

            central.scanForPeripherals(withServices: services,options:scanOptions)
            print("scanning...")

        }
        else {
            print("Bluetooth is not active")
        }
    }

func centralManager(_ central: CBCentralManager,didDiscover peripheral: CBPeripheral,advertisementData: [String : Any],
                        rssi RSSI: NSNumber)
    {

        print("RSSI   : \(RSSI)")

    }

这是我的info.plist。enter image description here

swift core-bluetooth bluetooth-peripheral
1个回答
1
投票

你似乎在期待重复,因为你已经设置了 CBCentralManagerScanOptionAllowDuplicatesKey. 该键在后台被忽略。如果你期望通过广告不止一次地看到同一个设备,那是不可能的。不过,发现你以前没见过的新设备应该可以。你有这方面的问题吗?(你应该解释一下你到底是如何测试这个的细节,你看到了什么精确的行为,以及你期望看到什么。蓝牙是非常微妙的。细节相当重要,"不工作 "太模糊了)。)

© www.soinside.com 2019 - 2024. All rights reserved.