Получить строку URL-адреса маяка eddystone - PullRequest
0 голосов
/ 19 июня 2020

У меня есть приложение android. Я использую Altbeacon «BeaconParser.EDDYSTONE_URL_LAYOUT» для передачи в качестве маяка. С другой стороны, у меня есть приложение для iOS. Я использую библиотеку BluetoothKit для сканирования этого маяка. Я могу сканировать и видеть значение RSSI своего устройства, но не могу получить строку URL. Это мой быстрый код;

public class BeaconScanning: NSObject, BKCentralDelegate{

    let central = BKCentral()

    override init(){
        super.init()
        startCentral()
    }
    private func startCentral() {
        central.delegate = self
        do {
            let serviceUUID = CBUUID(string: "0xFEAA")
            let characteristicUUID = CBUUID( )
            let configuration = BKConfiguration(dataServiceUUID: serviceUUID, dataServiceCharacteristicUUID: characteristicUUID)
            try central.startWithConfiguration(configuration)
        } catch let error { }
        scanBeacon()
    }


    public func scanBeacon() {

       central.scanContinuouslyWithChangeHandler({ changes, discoveries in }, stateHandler: { newState in
        }, duration: 3, inBetweenDelay: 0.1, beaconHandler: { beacons in

                for beacon in beacons! {

                  print(beacon.getRunningAverageRssi()) // ı can get it
                  print(beacon.getBluetoothName()) //return null

                  // ı want to get eddystone url.

                }
        }, errorHandler: { error in })
    }

Как я могу получить строку URL-адреса для моего android устройства?

1 Ответ

0 голосов
/ 20 июня 2020

BluetoothKit не обеспечивает функции распаковки передач Eddystone-URL. Вы можете попробовать ios -beacon-tools , который делает:

    scanner = RNLBeaconScanner.shared()
    scanner?.startScanning()
    
    // Execute this code periodically (every second or so) to view the beacons detected

    if let detectedBeacons = scanner?.trackedBeacons() as? [RNLBeacon] {
        for beacon in detectedBeacons {
             if (beacon.beaconTypeCode.intValue == 0x10 && beacon.serviceUuid.intValue == 0xFEAA) {
                // this is eddystone url
                NSLog("Detected EDDYSTONE-URL with %@", RNLURLBeaconCompressor.urlString(fromEddystoneURLIdentifier: beacon.id1))
            }
            else {
                // some other beacon type
            }
        }
    }        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...