For most data types the most possible frequency of updates is 1 hour.
iOS can update data more frequently for some data types, for example, vo2 max.
iOS may throttle the frequency of updates for background delivery depending on the app’s activity, battery state, etc.
Background delivery is not possible while device is locked, so it will be executed only when the device is unlocked.
iOS may stop background delivery if it detects that the app is not active for a long time.
The feature is available starting with iOS 15.
Important: The SpikeSDK, along with any other HealthKit applications, cannot guarantee data synchronization on a fixed schedule. The hourly sync
interval serves as a guideline rather than a strict requirement enforced by iOS. Consequently, the actual synchronization frequency may vary,
occurring hourly, once per day, or during specific system-defined events, such as the conclusion of Sleep Mode or when the device begins charging.
And now in your App struct, use the UIApplicationDelegateAdaptor property wrapper to tell SwiftUI it should use your AppDelegate class for the application delegate:
Copy
.@mainstruct YourApp: App { @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate ...}
Calling enableBackgroundDelivery will overwrite all the previous settings, so you have to call it with all the data types that you want in one call. It accepts all the possible data types that can be delivered in the background (statistics, records, activities and sleep).
Copy
func enableBackgroundDelivery( forStatistics: [StatisticsType]?, forMetrics: [MetricType]?, forActivities: [ActivityConfig]?, forSleep: [SleepConfig]?) async throwsorpublic struct BackgroundDeliveryConfig: Codable, Hashable, Sendable { public var statisticsTypes: [StatisticsType]? public var metricsTypes: [MetricType]? public var activityConfigs: [ActivityConfig]? public var sleepConfigs: [SleepConfig]?}
You can also call getBacgroundDeliveryConfig() to get the current configuration and disableBacgroundDelivery() to disable background delivery.