从iHealth设备(ios-Swift)实时读取数据?

从iHealth设备(ios-Swift)实时读取数据?,ios,swift,core-bluetooth,health-monitoring,Ios,Swift,Core Bluetooth,Health Monitoring,我想显示iHealth设备(如iHealth应用程序)的实时测量数据。所以我实现了iHealth SDK。我可以得到已经存储的用户文件数据 { HeightUnit: 0, WeightUnit: 0, dateofbirth: xxxxx, gender: "Male", height: 180.34, logo: "https%3a%2f%2fcloud.ihealthlabs.com%2fimages%2fdefault%2fAvatar.png", nickname: "Senthil

我想显示iHealth设备(如iHealth应用程序)的实时测量数据。所以我实现了iHealth SDK。我可以得到已经存储的用户文件数据

{
HeightUnit: 0,
WeightUnit: 0,
dateofbirth: xxxxx,
gender: "Male",
height: 180.34,
logo: "https%3a%2f%2fcloud.ihealthlabs.com%2fimages%2fdefault%2fAvatar.png",
nickname: "Senthil kumar",
userid: "yyyyyyy",
weight: 29.483539113316585
}
我实现了corebuletooth

扣除我的健康

var optionsdic : NSDictionary = NSDictionary(objectsAndKeys: false, CBCentralManagerScanOptionAllowDuplicatesKey)

centralManager!.scanForPeripheralsWithServices(nil, options: optionsdic as [NSObject : AnyObject])
上面的代码调用其委托方法

     let devID = "12345678-1234-1234-1234-123456789123"

 func centralManager(central: CBCentralManager!, didDiscoverPeripheral peripheral: CBPeripheral!, advertisementData: [NSObject : AnyObject]!, RSSI: NSNumber!) {

        if peripheral.identifier.UUIDString == devID
        {
            self.centralManager?.stopScan()
            self.myperipheral = peripheral
            self.myperipheral?.delegate = self
            self.centralManager?.connectPeripheral(peripheral, options: nil)
        }
    }


    func centralManager(central: CBCentralManager!, didConnectPeripheral peripheral: CBPeripheral!) {

        if peripheral.identifier.UUIDString == devID
        {
            if peripheral.state == CBPeripheralState.Connected
            {
                var uid : CBUUID = CBUUID(string: "FF70")
                self.myperipheral = peripheral
                self.myperipheral?.delegate = self
                self.myperipheral?.discoverServices([CBUUID(string: peripheral.identifier.UUIDString)])
            }
        }
    }

 func centralManager(central: CBCentralManager!, didDisconnectPeripheral peripheral: CBPeripheral!, error: NSError!) {
            println("Disconnected!== \(error)")
    }


    func peripheral(peripheral: CBPeripheral!, didDiscoverServices error: NSError!) {

            if let servicePeripherals = peripheral.services as? [CBService]
            {
                for servicePeripheral in servicePeripherals
                {
                    peripheral.discoverCharacteristics([servicePeripheral.UUID], forService: servicePeripheral)
                }
            }
    }



    func peripheral(peripheral: CBPeripheral!, didDiscoverCharacteristicsForService service: CBService!, error: NSError!) {

        if let charactericsArr = service.characteristics  as? [CBCharacteristic]
        {
            for charactericsx in charactericsArr
            {
                peripheral.setNotifyValue(true, forCharacteristic: charactericsx)

                if charactericsx.UUID.UUIDString == devID{
                    var parameter = NSInteger(1)
                    let data = NSData(bytes: &parameter, length: 1)
                    peripheral.writeValue(data, forCharacteristic: charactericsx, type: CBCharacteristicWriteType.WithResponse)
                }

                if charactericsx.UUID.UUIDString == "FF70" || charactericsx.UUID.UUIDString == "FF71"{
                    var parameter = NSInteger(1)
                    let data = NSData(bytes: &parameter, length: 1)
                    peripheral.writeValue(data, forCharacteristic: charactericsx, type: CBCharacteristicWriteType.WithResponse)
                    }
                peripheral.readValueForCharacteristic(charactericsx)
            }
        }

    }

    func readValueForCharacteristic(Charactersic: CBCharacteristic!){
        println("character == \(Charactersic)")
    }


    func peripheral(peripheral: CBPeripheral!, didUpdateNotificationStateForCharacteristic characteristic: CBCharacteristic!, error: NSError!) {

        if ((error) != nil) {
            println("Error discovering service: \(error.localizedDescription)")
            return;
        }

        println("description: \(characteristic.description), descriptors: \(characteristic.descriptors), properties: \(characteristic.properties), service :\(characteristic.service), value:\(characteristic.value)")

        if (characteristic.isNotifying) {
            peripheral.readValueForCharacteristic(characteristic)
        }
    }
我在DidDiscoversServices方法中得到了空阵列(servicePeripherals)。我想直接在ios应用程序和iHealth设备之间进行通信。我的健康设备读取的数据显示在我的应用程序中。我无法连接,无法使用核心蓝牙从iHealth设备读取实时数据。
请给我建议。

我桌上刚刚有一个无线脉搏血氧计,我需要连接到树莓Pi或安卓(或任何东西,真的) 在我看来,iHealth API是云中的一个存储库。我不认为到ble设备的通信在他们的API中公开

如果您仍在尝试从这些设备获取数据,就像我一样,也许可以通过观察iPhone和ble设备之间的数据交换,但我不确定

如果你发现了,请告诉我!!
约翰·布罗汉(John Brohan)

我桌上刚刚有一个无线脉搏血氧计,我需要连接到树莓皮或者安卓(或者其他任何东西,真的) 在我看来,iHealth API是云中的一个存储库。我不认为到ble设备的通信在他们的API中公开

如果您仍在尝试从这些设备获取数据,就像我一样,也许可以通过观察iPhone和ble设备之间的数据交换,但我不确定

如果你发现了,请告诉我!!
John Brohan

我的朋友,你需要发布你的代码,以便其他人能够提供全面帮助you@Lamour:我编辑了我的代码。帮我解决这个问题。你解决过这个问题吗?你能破解如何读取iHealth脉搏血氧仪数据(PO3型)吗?我的朋友,你需要发布你的代码,以便其他人提供全面帮助you@Lamour:我编辑了我的代码。帮我解决这个问题。你解决过这个问题吗?您是否能够理解如何读取iHealth脉搏血氧仪数据(PO3型)?很抱歉,但是,您是否获得了将树莓Pi与iHealth脉搏血氧仪链接的任何结果?我需要做同样的事情,但他们提供的SDK是专门为Android/iOS应用程序设计的(将所有低级蓝牙协议隐藏在静态库或JAR中)。很抱歉发表评论,但是,您尝试将Raspberry Pi链接到iHealth Pulse Oximeter上是否获得了任何结果?我需要做同样的事情,但他们提供的SDK是专门为Android/iOS应用程序设计的(将所有低级蓝牙协议隐藏在静态库或JAR中)