我在我的Swift应用程序中制作了Beacon,它是广告数据,但它的本地名称没有显示,我们可以在广告过程中添加自定义数据包吗?

xxhby3vn  于 2023-01-08  发布在  Swift
关注(0)|答案(1)|浏览(79)

我的应用程序充当信标,但我想添加其本地名称,如我的appName。我想知道我们是否可以发布自定义数据包,在其中我可以添加本地名称,同时在Swift中发布主要、次要、邻近和标识符。
我目前的代码为广告ibeacon:

func initLocalBeacon() {
        if localBeacon != nil {
            stopLocalBeacon()
        }
        let uuid = UUID(uuidString: localBeaconUUID)!
        localBeacon = CLBeaconRegion(uuid: uuid, major: localBeaconMajor, minor: localBeaconMinor, identifier: identifier)
        beaconPeripheralData = localBeacon.peripheralData(withMeasuredPower: nil)
        
        peripheralManager = CBPeripheralManager(delegate: self, queue: nil, options: nil)
    }
    
    func peripheralManagerDidUpdateState(_ peripheral: CBPeripheralManager) {
        if peripheral.state == .poweredOn {
            peripheralManager.startAdvertising(beaconPeripheralData as? [String: Any])
        }
        else if peripheral.state == .poweredOff {
            peripheralManager.stopAdvertising()
        }
    }

我正在尝试添加自定义数据包,在其中添加信标的本地名称。是否可以?

edqdpe6u

edqdpe6u1#

您的应用对iOS上的BLE广告的控制非常有限,因为它是所有应用之间的共享资源。
以下是应用程序可以做的事情:

  • 在前台触发iBeacon广告。你只能控制一个16字节的UUID,一个2字节的主UUID和一个2字节的次UUID。
  • 在前台触发一个16字节的服务UUID广告。
  • 当您的应用处于后台时,触发128位掩码中的多个位在溢出区域广告中打开。

以下是手机(不是你的应用程序)可以做的事情:

  • 触发包含手机名称的扫描响应包。这是操作系统自动执行的,名称是设置中的手机名称。

您的应用无法更改扫描响应中的已公布名称。它无法通过BLE公布除以上所示之外的其他数据,因此您只能使用有限的字节数。

相关问题