Я создал свой собственный менеджер пакетов Swift, который имеет функциональные возможности Corebluetooth, и у меня есть другой проект, который вызывает менеджер пакетов Swift для любых функций corebluetooth.
У меня есть несколько вопросов, которые перечислены ниже:
Есть ли способ получить доступ к имени периферии и RSSI из моего проекта с помощью зависимости пакета Swift?
Как заполнить список периферийных устройств? устройства с RSSI в моем проекте с использованием swiftUI?
Код для пакета BLE приведен ниже, и я только что вставил инициализаторы проекта
Инициализаторы:
public var RSSIs = [NSNumber]() // initialized variable named RSSIs and array is created
public var peripherals_list = [String]() // initialized peripherals as an array
public var peripheralListAny = [CBPeripheral]()
Код для CentralManager DidUpdateState
/*
Invoked when the central manager’s state is updated.
The Central Manager starts to scan for peripheral if Bluetooth is activated.
*/
public func centralManagerDidUpdateState(_ central: CBCentralManager) {
print("state: \(self.getStateString())")
guard central.state == .poweredOn else {
self.showStateAlert = false
print("Bluetooth Enabled")
return
}
self.startContinuousScan() // When Bluetooth is on the startScan function is called
}
/*
Starts single scanning for BLE devices with product UUID
*/
func startSingleScan() {
print("Now Scanning...")
self.centralManager?.scanForPeripherals(
withServices: self.productId , options: [
CBCentralManagerScanOptionAllowDuplicatesKey: false])
}
/*
Starts a continuous scan with the timer intervals of 5 seconds
and calls single scan and it repeats
*/
func startContinuousScan() {
Timer.scheduledTimer(withTimeInterval: 2, repeats: true) {_ in
self.startSingleScan() //Starts scanning for peripherals
}
}
Код для CentralManager didDiscover периферийные устройства:
public func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) -> (peripheralName: [String], RssiValues: [NSNumber]) {
self.peripheralListAny = [peripheral]
print ("PeripheralListANY: \(peripheralListAny)")
print("******************************************")
self.RSSIs.append(RSSI) // RSSI values are appended in the array
print("RSSI: \(RSSIs)")
print("******************************************")
self.peripherals_list.append(peripheral.name!) // peripherals list is got from CB peripheral and is appended in an array
print("Peripheral List \(peripherals_list)")
print("******************************************")
print("Peripheral Print: \(peripheral)")
print("Print Peripheral's Name: \(peripheral.name!)")
return (peripherals_list,RSSIs)
}
Инициализаторы для ListView
@EnvironmentObject var ble: BLE
@State var peripheralsList = [] // initialized peripherals as an array
@State var rssiValues = []