ios - 在 iOS 设备上以编程方式测试蓝牙版本

标签 ios swift bluetooth-lowenergy

有没有办法以编程方式确定某人正在使用的 iOS 设备(iPhone 或 iPad)的 BLE 版本(4.0、4.2、5 等)?我需要找到这个来了解是否应该在应用程序上启用某些功能,这些功能需要一定的数据传输速率。我使用的是 Swift,该应用程序将仅与我们硬件中安装的一种类型的 BLE 模块进行通信。

最佳答案

一种选择是保存对各种 iPhone 型号蓝牙功能的引用,然后按型号查找蓝牙版本。

根据 Has's answer ,你可以这样获取设备的型号:

func getBluetoothVersion() -> Double{
    let versions: [String: Double] = [
        "iPhone8,1": 4.2,
        "iPhone9,1": 4.2,
        "iPhone10,3": 5.0 //Add as many as you want
    ] 
    var systemInfo = utsname()
    uname(&systemInfo)
    let machineMirror = Mirror(reflecting: systemInfo.machine)
    let identifier = machineMirror.children.reduce("") { identifier, element in
        guard let value = element.value as? Int8, value != 0 else { return identifier }
        return versions[identifier + String(UnicodeScalar(UInt8(value)))]
    }
}

上面的代码尚未经过测试,但它应该可以工作或需要很少的修复。

关于ios - 在 iOS 设备上以编程方式测试蓝牙版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49711137/

相关文章:

ios - 无论框架的 x 和 y 为何,UIView 始终位于屏幕底部 - Swift

ios - 从 Cognito 向客户端发布身份验证自定义响应

ios - 在 Sprite Kit 中拖动一个对象与另一个对象碰撞时不会发生弹跳

iOS Core蓝牙无法通过特性传输数据

ios - 编程自定义单元格内存泄漏问题

ios - AVCaptureSession 隐藏 Storyboard中的按钮

java - 你会如何给 Android Things 中的蓝牙服务命名?

android - 如何重置 MetaWear 设备?

android - bindservice 中的 onServiceConnected 只被调用一次

ios - 尝试使用 for 循环并将其替换为某个值