Skip to content
Health Framework to make using HealthKit simpler
Swift Ruby
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.


CI Status Version License Platform


  • Make using HealthKit to a project easy.
  • Enable easy integration for health data.
  • Provide an Open Source project for the iOS open source community.
  • Help others learn about HealthKit.


MBHealthTracker is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'MBHealthTracker'

Getting Started

Configuration for HealthKit

Add health kit in capabilities through project in "Capabilities"

Add below code to your info.plist

<string>Health want to read your health data</string>
<string>Health wants to write your progress to health store</string>


The main driver that contains all the business logic is MBHealthTracker which can be injected into your services with MBHealthTrackerProtocol

The MBHealthTracker contains all the services below

let tracker = MBHealthTracker()
let configuration = tracker.configuration

Alternatively is you just need a single service you could just inject the protocol needed

let configuration = ConfigurationService()
MyService -> init(configuration: ConfigurationServiceProtocol)
let myService = MyService(configuration: configuration)


  • requestingAuthorization
  • presenting healthKit app

var configuration: ConfigurationServiceProtocol


  • getting sleep
  • saving sleep item

var sleep: SleepServiceProtocol


  • getting mindful sessions
  • saving mindful item

var mindful: MindfulnessServiceProtocol


  • biologicalSex
  • bloodType
  • dateOfBirth
  • skinType
  • isWheelChairUser

var characteristics: CharacteristicServiceProtocol


The ActivityManager contains all the services below and can be injected into your services with ActivityManagerProtocol if you just need this service

let activityManager = ActivityManager()
let activeEnergy = activityManager.activeEnergy

or using MBHealthTracker

let tracker = MBHealthTracker()
let activeEnergy = tracker.activityManager.activeEnergy


Split into sections to gather data based on timeIntervals

  • today, thisWeek, betweenTime

var activeEnergy: ActiveEnergyServiceProtocol


Split into sections to gather data based on timeIntervals

  • last hour, today, thisWeek, betweenTime

var steps: StepsServiceProtocol


  • saveWorkoutItem
  • getWorkouts
  • today, thisWeek, all

var workout: WorkoutManagerProtocol


  • bodyMass
  • bodyMassIndex
  • bodyFatPercentage
  • leanBodyMass
  • height
  • waistCircumference

var body: BodyServiceProtocol


  • macronutrients
  • minerals
  • ultratrace minerals
  • vitamins
  • hydration
  • caffeine

var nutritionService: NutritionServiceProtocol


Split into sections to gather data based on timeIntervals

  • today, thisWeek, all

var heartRate: HeartRateServiceProtocol

Reproductive health

  • basalBodyTemperature
  • cervicalMucusQuality
  • menstrualFlow
  • ovulation
  • sexualActivity
  • spotting

var reproductive: ReproductiveServiceProtocol


Have a question or an issue about MBHealthTracker? Create an issue!

Interested in contributing to MBHealthTracker? Branch off and create a PR

Apps using this library

Add your app to the list of apps using this library and make a pull request.


MBHealthTracker is available under the MIT license.

You can’t perform that action at this time.