To set up the Spike SDK create SpikeConnectionV3 instance with your Spike application id, application user id and signature unique to each of your apllication users (more on generating signatures here):
Provide permissions to access iOS HealthKit data. Spike SDK method will check required permissions and request them if needed. Permission dialog may not be shown according on iOS permissions rules.
public enum StatisticsType: String { case steps case distanceTotal = "distance_total" case distanceWalking = "distance_walking" case distanceCycling = "distance_cycling" case distanceRunning = "distance_running" case caloriesBurnedTotal = "calories_burned_total" case caloriesBurnedBasal = "calories_burned_basal" case caloriesBurnedActive = "calories_burned_active"}public enum StatisticsInterval: String, Codable { case hour case day}public struct StatisticsFilter { public var excludeManual: Bool = false public var providers: [Provider]? = nil}// Result:public struct Statistic: Codable, Hashable { public var start: Date public var end: Date public var duration: Int public var type: StatisticsType public var value: Double public var unit: Unit public var rowCount: Int? public var recordIds: [UUID]?}
public enum MetricType: String, Codable, Hashable { case stepsTotal case distanceTotal case distanceWalking case distanceCycling case distanceRunning case caloriesBurnedActive case caloriesBurnedBasal case caloriesBurnedTotal}// Resultpublic struct Record: Codable, Hashable { public var recordId: UUID public var inputMethod: InputMethod? public var startAt: Date public var endAt: Date? public var modifiedAt: Date public var duration: Int? public var provider: Provider? public var providerSource: ProviderSource? public var isSourceAggregated: Bool? public var source: RecordSource? public var metrics: [String: Double]? public var activityTags: [ActivityTag]? public var activityType: ActivityType? public var sessions: [ActivityEntry]? public var laps: [ActivityEntry]? public var segments: [ActivityEntry]? public var splits: [ActivityEntry]? public var samples: [ActivitySamples]? public var routePoints: [ActivitySamples]?}