Skip to main content
net7.0net7.0-android33.0net7.0-ios16.1

Cross Platform health data - Apple Health and Google Fit Integrations

Published
Aug 28, 2023
3y ago
Total Downloads
4.8K
4,843

Install

dotnet add package Shiny.Health --version 1.0.0-beta-0001
ProductVersions
.NET
net7.0net7.0-android33.0net7.0-ios16.1

README

Shiny Health

Apple Health and Google Fit for your .NET7+ .NET Mobile apps

Features

  • Read summary values between timestamps and specified interval
  • Query distance, step count, calory intake, & heart rate
  • TODO: Write values

How To Use

IHealthService health; // inject, resolve, etc

// request permissions
var result = await health.RequestPermission(
    new Permission(DistanceHealthMetric.Default, PermissionType.Read),
    new Permission(CaloriesHealthMetric.Default, PermissionType.Read),
    new Permission(StepCountHealthMetric.Default, PermissionType.Read),
    new Permission(HeartRateHealthMetric.Default, PermissionType.Read)
);
if (!result)
{
    // say something useful
}

var end = DateTimeOffset.Now;
var start = DateTimeOffset.Now.AddDays(-1);

// now run your queries
var distance = (await health.Query(DistanceHealthMetric.Default, start, end, Interval.Days)).Sum(x => x.Value);
var calories = (await health.Query(CaloriesHealthMetric.Default, start, end, Interval.Days)).Sum(x => x.Value);
var steps = (await health.Query(StepCountHealthMetric.Default, start, end, Interval.Days)).Sum(x => x.Value);
var heartRate = (await health.Query(HeartRateHealthMetric.Default, start, end, Interval.Days)).Average(x => x.Value);

Setup

MAUI

Install Shiny.Health from NuGet

Now, in your MauiProgram.cs, add:


public static MauiApp CreateMauiApp()
{
    var builder = MauiApp
        .CreateBuilder()
        .UseShiny()
        .UseMauiApp<App>()
        .ConfigureFonts(fonts =>
        {
            fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); 
        });

    builder.Services.AddHealthIntegration();
    return builder.Build();
}

iOS

To use iOS (and therefore the sample), you need to have a provisioning profile with all of the necessary Apple Health setup for your application.

Take a look at the Xamarin docs for more info

Add the following:

Info.plist
<key>UIRequiredDeviceCapabilities</key>
<string>healthkithealthkit</string>
<key>NSHealthUpdateUsageDescription</key>
<string>We need to say something useful here</string>
<key>NSHealthShareUsageDescription</key>
<string>We need to say something useful here</string>
Entitlements.plist
<key>com.apple.developer.healthkit</key>
<true />
<key>com.apple.developer.healthkit.background-delivery</key>
<true />
Google Fit

Official Android Documentation

Adoption Assessment

A verified publisher signal is available. Assess fit from the package's supported frameworks, license and dependency graph rather than popularity alone.

This version is marked prerelease. Validate its API and upgrade path before production use.Compatibility metadata lists 3 target frameworks; confirm the exact target used by your application.

Related Guides & Workflows

Learn how to evaluate, integrate, or audit this package in your .NET project.