gpt4 book ai didi

ios - 在后台监听特定的蓝牙特征值

转载 作者:行者123 更新时间:2023-12-01 19:58:03 29 4
gpt4 key购买 nike

我知道使用 iBeacon我可以听一些UUID当应用程序关闭时。
我想听 的具体值特性 当应用程序关闭时。

所以,当应用程序是 打开并连接到设备,当新数据到达时我得到这个委托(delegate):

  func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {

if characteristic.uuid.uuidString == characteristicUUID {

if let str = NSString(data: characteristic.value!, encoding: String.Encoding.utf8.rawValue)

有没有办法在应用程序关闭时获得这个委托(delegate)?所以我可以检查并查看我得到了我正在等待的正确字符串?

我知道我通常只有在连接到设备时才能听这个,但即使没有连接我也想听。

iBeacon 与任何 交互的唯一方式低功耗蓝牙 当应用程序关闭时?
它相当有限。

最佳答案

我正在回答我的问题以获取此信息。(也感谢保罗)

所以今天为了能够在应用程序完全关闭(由用户或系统)时从硬件获取信息,您只能使用 iBeacons .

但是 iBeacons 非常有限,你只能听一些 UUID/MJ/MN就是这样。

如果您想一直获取传感器数据怎么办?

方法Apple需要的是,您应该始终保持与设备的连接。因此,当您的应用程序处于后台时,您只需得到相同的 delegatescharacteristic正在更新它的值,而您仍然处于连接状态。

如果你出去怎么办?

连接丢失,您要求再次搜索设备,当您回到家时您有连接,您可以再次自动收听。

如果系统取消您的应用程序以释放内存怎么办?

在这种情况下,您使用 Preservation and Restoration ,这将恢复您的 CBCentral当应用程序再次检测到硬件 .这样做:

centralManager=CBCentralManager(delegate: self, queue: nil, options: ["key":CBCentralManagerOptionRestoreIdentifierKey])

您在此处设置了 CBCentralManagerOptionRestoreIdentifierKey用你的“ key ”。
当 iOS 再次检测到信号时,你会得到这个委托(delegate):
func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any]) {
print(dict)
}

使用您的对象列表,您可以再次获取连接和数据。

底线:
方法是 - 如果您需要不断获取传感器数据,例如打开和关闭锁,您将始终保持连接状态。(而不是使用 iBeacon)

另一个底线:
如果用户关闭了您的应用程序,如 Paul 所说,您将无法真正继续聆听,我认为这是一种非常奇怪的方法。

https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/CoreBluetoothBackgroundProcessingForIOSApps/PerformingTasksWhileYourAppIsInTheBackground.html

关于ios - 在后台监听特定的蓝牙特征值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41443298/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com