【问题标题】:IOS Bluejay Framework, the listen methods will not keep listening, quits after starting to listenIOS Bluejay Framework,监听方法不会一直监听,开始监听后退出
【发布时间】:2021-03-17 22:08:12
【问题描述】:

我正在使用 Bluejay 框架编写一个将连接到我的 BLE 设备的应用程序。 我有一项服务可以在固件完成启动时传输数据。

我正在调用这个方法:

func listenLiveSignals()
    {
        let requestedChar = CharacteristicIdentifier(uuid: NotioModel.signalLiveData, service: ServiceIdentifier(uuid: NotioModel.SignalsService))
        
        bluejay.listen(to: requestedChar, multipleListenOption: .replaceable) {[weak self] (result: ReadResult<NotioSignals>) in
            print("Signals update")
            switch result {
            case .success(let signals):
                self?.liveSignals = signals
            case .failure(let err):
                print("Error: \(err)")
            }
        }
    }

在日志中我得到了这个

Queue will start Bluejay.ListenCharacteristic...
Will start listening to Characteristic: 9AFABEDB-50F5-4766-8EE1-709073D6EB08, Service: 9AFAABCD-50F5-4766-8EE1-709073D6EB08 on NOTIOFE46EEBB.
Listening to Characteristic: 9AFABEDB-50F5-4766-8EE1-709073D6EB08, Service: 9AFAABCD-50F5-4766-8EE1-709073D6EB08 on NOTIOFE46EEBB.
Queue has removed Bluejay.ListenCharacteristic because it has finished.
Queue is empty, nothing to update.

这是我用来连接外围设备的代码。

func connect(_ peripheral: PeripheralIdentifier) {
        self.bluejay.connect(peripheral, timeout: .seconds(15)) { connectionResult in
            switch connectionResult {
            case .success:
                print("Connection attempt to: \(peripheral.description) is successful")
            case .failure(let error):
                print("Error: \(error)")
            }
        }
    }

我的项目还连接到加载了 BlinkyLed 服务的北欧开发板,并且使用相同的代码连接到其上的按钮服务,效果很好,这对我来说有点莫名其妙。

如果有人知道 Bluejay 为什么这样做,我知道,或者如果您需要更多核心,也请告诉我。

【问题讨论】:

  • 可能是因为requestedChar 是一个局部变量,函数一退出就会被释放。让它成为一个属性
  • @Paulw11将其设为私有变量,但仍然遇到同样的问题 :(
  • 包含此函数的对象是否也以某种方式保留了下来?日志表明正在释放监听特性。
  • 是的,声明代码的对象被主视图保留。实例作为环境对象传递给子视图
  • BLE 设备有问题。制造它的工程师告诉我,它在固件方面。 “关闭”这个问题

标签: ios core-bluetooth


【解决方案1】:

问题出在固件方面,BLE 设备需要我告诉它才能激活数据流。 XD 记录 API 非常重要,即使它是固件。

【讨论】:

    猜你喜欢
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 2012-02-06
    相关资源
    最近更新 更多