FitDataProtocol 2.1.5

FitDataProtocol 2.1.5

Kevin A. Hoogheem 维护。



 
依赖
DataDecoder>= 5.0.0
FitnessUnits>= 3.1.0
AntMessageProtocol>= 1.1.1
 

  • 作者
  • Kevin A. Hoogheem

FitDataProtocol

Swift5.2 Version License Platform

Garmin 可扩展和互操作数据传输协议的 Swift 版本。

支持 SDK 版本 21.16.0

安装

FitDataProtocol 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod 'FitDataProtocol'

Swift 包管理器

    dependencies: [
        .package(url: "https://github.com/FitnessKit/FitDataProtocol", from: "2.1.4")
    ]

如何使用

解码 FIT 文件

let fileUrl = URL(fileURLWithPath: "WeightScaleMultiUser" + ".fit")
let fileData = try? Data(contentsOf: fileUrl)

if let fileData = fileData {
    var decoder = FitFileDecoder(crcCheckingStrategy: .throws)

    do {

        try decoder.decode(data: fileData,
                           messages: FitFileDecoder.defaultMessages,
                           decoded: { (message: FitMessage) in

            print("Got Message: \(message)")

            if let message = message as? FileIdMessage {
                print("mssage", message.deviceSerialNumber)
            }

            if let message = message as? RecordMessage {
                records.append(message)
            }

            if let message = message as? SportMessage {
                sports.append(message)
            }

            if let message = message as? ActivityMessage {
                activity.append(message)
            }
        })

    } catch {
        print(error)
    }
}

编码 FIT 文件

作为编码 FIT 文件的一部分,您可以检查编码数据的有效性。

选项有

  • 无 - 不进行有效性检查
  • fileType - 根据“文件类型”,将进行检查以确保包含正确的字段
  • garminConnect - 为 GarminConnect 创建 FIT 文件的特殊检查

示例

let activity = ActivityMessage(timeStamp: FitTime(date: Date()),
                               totalTimerTime: nil,
                               localTimeStamp: nil,
                               numberOfSessions: nil,
                               activity: Activity.multisport,
                               event: nil,
                               eventType: nil,
                               eventGroup: nil)


let fieldId = FileIdMessage(deviceSerialNumber: nil,
                            fileCreationDate: time,
                            manufacturer: Manufacturer.garmin,
                            product: nil,
                            fileNumber: nil,
                            fileType: FileType.activity,
                            productName: nil)

let encoder = FitFileEncoder(dataValidityStrategy: .none)

let result = encoder.encode(fildIdMessage: fiel, messages: [activity])
switch result {
case .success(let encodedData):
    print(encodedData as NSData)
    /// you can save off the file data
case .failure(let error):
    print(error.localizedDescription)
}

///
/// You can still use doCatch 
///
do {
    let encoder = FitFileEncoder(dataValidityStrategy: .none)

    let data = try encoder.encode(fildIdMessage: fieldId, messages: [activity]).get()
    print(data as NSData)

    /// you can save off the file data

} catch  {
    print(error)
}

作者

此包由 Kevin A. Hoogheem 开发和维护

许可证

FitDataProtocol 在 MIT 许可证 之下可用