У меня есть приложение, работающее в фоновом режиме. Я использую CBPeripheralManager to Advertising и 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;