HealthKit v Xamarin.iOS
Health Kit poskytuje zabezpečené úložiště dat pro informace související se stavem uživatele. Aplikace sady Health Kit můžou s explicitním oprávněním uživatele číst a zapisovat do tohoto úložiště dat a přijímat oznámení při přidání příslušných dat. Aplikace můžou prezentovat data nebo uživatel může pomocí aplikace Stavu od Společnosti Apple zobrazit řídicí panel všech svých dat.
Vzhledem k tomu, že data související se zdravím jsou tak citlivá a zásadní, je sada Health Kit silně zapisována, s jednotkami měření a explicitním přidružením k typu zaznamenaných informací (například hladina glukózy v krvi nebo srdeční frekvence). Aplikace Health Kit navíc musí používat explicitní nároky, musí požádat o přístup ke konkrétním typům informací a uživatel musí aplikaci explicitně udělit přístup k těmto typům dat.
Tento článek vám představí:
- Požadavky na zabezpečení sady Health Kit, včetně zřizování aplikací a vyžádání uživatelského oprávnění pro přístup k databázi Health Kit;
- Systém typů sady Health Kit, který minimalizuje možnost chybného použití nebo chybné interpretace dat;
- Zápis do sdíleného úložiště dat sady Health Kit pro celý systém.
Tento článek se nebude zabývat pokročilejšími tématy, jako je dotazování databáze, převod mezi měrovými jednotkami nebo příjem oznámení o nových datech.
V tomto článku vytvoříme ukázkovou aplikaci pro zaznamenání srdeční frekvence uživatele:
K dokončení kroků uvedených v tomto článku jsou potřeba následující:
- Xcode 7 a iOS 8 (nebo novější) – na počítači vývojáře musí být nainstalovaná a nakonfigurovaná nejnovější rozhraní API Xcode a iOS společnosti Apple.
- Visual Studio pro Mac nebo Visual Studio – na počítači vývojáře by měla být nainstalovaná a nakonfigurovaná nejnovější verze Visual Studio pro Mac.
- Zařízení s iOSem 8 (nebo novějším) – zařízení s iOSem, na kterém běží nejnovější verze iOS 8 nebo novější pro testování.
Důležité
Health Kit byl představen v iOS 8. V současné době není v simulátoru iOS k dispozici sada Health Kit a ladění vyžaduje připojení k fyzickému zařízení s iOSem.
Než aplikace Xamarinu iOS 8 může používat rozhraní HealthKit API, musí být správně nakonfigurované a zřízené. Tato část popisuje kroky potřebné k správnému nastavení aplikace Xamarin.
Aplikace sady Health Kit vyžadují:
- Explicitní ID aplikace.
- Profil zřizování přidružený k danému explicitnímu ID aplikace a s oprávněními sady Health Kit.
com.apple.developer.healthkit
VlastnostEntitlements.plist
typuBoolean
nastavena naYes
.- Jejíž
UIRequiredDeviceCapabilities
Info.plist
klíč obsahuje položku sString
hodnotouhealthkit
. - Musí
Info.plist
mít také odpovídající položky vysvětlení ochrany osobních údajů:String
vysvětlení klíčeNSHealthUpdateUsageDescription
, pokud aplikace bude zapisovat data aString
vysvětlení klíčeNSHealthShareUsageDescription
, pokud aplikace bude číst data sady Health Kit.
Další informace o zřizování aplikace pro iOS najdete v článku Device Provisioning v sérii Začínáme s Xamarinem, která popisuje vztah mezi certifikáty pro vývojáře, ID aplikací, zřizovacími profily a nároky aplikací.
Vytvoření explicitního ID aplikace a příslušného zřizovacího profilu se provádí v Centru vývojářů pro iOS společnosti Apple.
Vaše aktuální ID aplikací jsou uvedená v části Certifikáty, Identifikátory a profily v Centru pro vývojáře. Tento seznam často zobrazuje hodnoty *
ID označující, že název ID - aplikace lze použít s libovolným počtem přípon. Id takových zástupných znaků nelze použít se sadou Health Kit.
Pokud chcete vytvořit explicitní ID aplikace, klikněte na + tlačítko v pravém horním rohu a přejděte na stránku Zaregistrovat ID aplikace pro iOS:
Jak je znázorněno na obrázku výše, po vytvoření popisu aplikace použijte oddíl Explicit App ID k vytvoření ID pro vaši aplikaci. V části App Services zkontrolujte sadu Health Kit v části Povolit služby.
Až budete hotovi, stiskněte tlačítko Pokračovat a zaregistrujte ID aplikace ve svém účtu. Vrátíte se zpět na stránku Certifikáty, Identifikátory a Profily . Kliknutím na zřizovací profily přejdete do seznamu aktuálních zřizovacích profilů a kliknutím na + tlačítko v pravém horním rohu přejdete na stránku Přidat zřizovací profil iOS. Vyberte možnost Vývoj aplikací pro iOS a kliknutím na Pokračovat se dostanete na stránku Vybrat ID aplikace. Tady vyberte explicitní ID aplikace, které jste zadali dříve:
Klikněte na Pokračovat a projděte si zbývající obrazovky, kde zadáte svoje certifikáty pro vývojáře, zařízení a název tohoto zřizovacího profilu:
Klikněte na Generate and await the creation of your profile. Stáhněte soubor a poklikáním ho nainstalujte do Xcode. Můžete potvrdit, že se jedná o instalaci v části Zobrazení podrobností účtů > předvoleb > Xcode>... Měl by se zobrazit právě nainstalovaný profil zřizování a měl by mít ikonu pro Health Kit a všechny další speciální služby v řádku Nároky:
Po vytvoření a instalaci vhodného zřizovacího profilu, jak je popsáno, je obvykle čas vytvořit řešení v Visual Studio pro Mac nebo sadě Visual Studio. Přístup k sadě Health Kit je k dispozici pro jakýkoli projekt v jazyce C# nebo F# pro iOS.
Místo ručního procházení procesu vytvoření projektu Xamarinu iOS 8 otevřete ukázkovou aplikaci připojenou k tomuto článku (která obsahuje předem připravenou storyboard a kód). Pokud chcete ukázkovou aplikaci přidružit k profilu zřizování s povolenou sadou Health Kit, klikněte na panelu řešení pravým tlačítkem myši na projekt a zobrazte dialogové okno Možnosti. Přepněte na panel aplikace pro iOS a zadejte explicitní ID aplikace, které jste vytvořili dříve jako identifikátor sady prostředků aplikace:
Nyní přepněte na panel podepisování sady prostředků iOS. Váš nedávno nainstalovaný profil zřizování s přidružením k explicitnímu ID aplikace bude nyní k dispozici jako zřizovací profil:
Pokud profil zřizování není k dispozici, pečlivě zkontrolujte identifikátor sady na panelu aplikace pro iOS a na panelu aplikace pro iOS, který je zadaný v centru pro vývoj pro iOS a že je nainstalovaný profil zřizování (podrobnosti zobrazení účtů > předvoleb > Xcode>...).
Pokud je vybrán profil zřizování s povolenou sadou Health Kit, kliknutím na tlačítko OK zavřete dialogové okno Možnosti projektu.
Ukázková aplikace obsahuje Entitlements.plist
soubor (který je nezbytný pro aplikace s povolenou sadou Health Kit) a není součástí každé šablony projektu. Pokud projekt neobsahuje nároky, klikněte pravým tlačítkem myši na projekt, zvolte Soubor > nový soubor... > Soubor Entitlements.plist pro iOS > a přidejte ho ručně.
V konečném důsledku Entitlements.plist
musí mít následující pár klíč a hodnota:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.HealthKit</key>
<true/>
</dict>
</plist>
Info.plist
Podobně musí mít aplikace hodnotu healthkit
přidruženou ke klíčiUIRequiredDeviceCapabilities
:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
<string>healthkit</string>
</array>
Ukázková aplikace poskytovaná v tomto článku obsahuje předkonfigurované Entitlements.plist
klíče, které zahrnují všechny požadované klíče.
Úložiště dat sady Health Kit je privátní úložiště dat specifické pro uživatele, které se sdílí mezi aplikacemi. Vzhledem k tomu, že informace o stavu jsou tak citlivé, musí uživatel podniknout pozitivní kroky pro povolení přístupu k datům. Tento přístup může být částečný (zápis, ale ne čtení, přístup pro některé typy dat, ale ne jiné atd.) a může být kdykoli odvolán. Aplikace sady Health Kit by měly být napsány defenzivně s tím, že mnoho uživatelů bude váhat o ukládání informací souvisejících se zdravím.
Data sady Health Kit jsou omezena na zadané typy Apple. Tyto typy jsou přísně definovány: některé, například krevní typ, jsou omezeny na konkrétní hodnoty zadaného Apple výčtu, zatímco jiné kombinují velikost s měrnou jednotkou (například gramy, kalorií a litry). I data, která sdílejí kompatibilní měrnou jednotku, jsou například rozlišena jejich HKObjectType
; například systém typů zachytí omylem pokus o uložení HKQuantityTypeIdentifier.NumberOfTimesFallen
hodnoty do pole, které HKQuantityTypeIdentifier.FlightsClimbed
očekává, i když obě používají HKUnit.Count
měrnou jednotku.
Typy ukládané v úložišti dat sady Health Kit jsou všechny podtřídy HKObjectType
. HKCharacteristicType
předměty ukládají biologický sex, krevní typ a datum narození. Běžnější jsou HKSampleType
ale objekty, které představují data, která se vzorkují v určitém čase nebo v určitém časovém období.
HKSampleType
je abstraktní a má čtyři konkrétní podtřídy. V současné době existuje pouze jeden typ HKCategoryType
dat, což je Analýza spánku. Velká většina dat v sadě Health Kit je typu HKQuantityType
a ukládá je do HKQuantitySample
objektů, které se vytvářejí pomocí známého vzoru návrhu továrny:
HKQuantityType
typy jsou v rozsahu od HKQuantityTypeIdentifier.ActiveEnergyBurned
do HKQuantityTypeIdentifier.StepCount
.
Koncoví uživatelé musí provést pozitivní kroky, aby aplikace mohla číst nebo zapisovat data sady Health Kit. To se provádí prostřednictvím aplikace Health, která je předinstalovaná na zařízeních s iOSem 8. Při prvním spuštění aplikace Health Kit se uživateli zobrazí dialogové okno pro přístup ke stavu řízené systémem:
Později může uživatel změnit oprávnění pomocí dialogového okna Zdroje aplikace Health:
Vzhledem k tomu, že informace o stavu jsou extrémně citlivé, vývojáři aplikací by měli své programy napsat defenzivně, s očekáváním, že se oprávnění při běhu aplikace zamítnou a změní. Nejběžnějším idiomem je požadovat oprávnění v UIApplicationDelegate.OnActivated
metodě a pak podle potřeby upravit uživatelské rozhraní.
V projektu zřízeném v sadě Health Kit otevřete AppDelegate.cs
soubor. Všimněte si příkazu using HealthKit
; v horní části souboru.
Následující kód se vztahuje k oprávněním sady Health Kit:
private HKHealthStore healthKitStore = new HKHealthStore ();
public override void OnActivated (UIApplication application)
{
base.OnActivated(application);
ValidateAuthorization ();
}
private void ValidateAuthorization ()
{
var heartRateId = HKQuantityTypeIdentifierKey.HeartRate;
var heartRateType = HKObjectType.GetQuantityType (heartRateId);
var typesToWrite = new NSSet (new [] { heartRateType });
var typesToRead = new NSSet ();
healthKitStore.RequestAuthorizationToShare (
typesToWrite,
typesToRead,
ReactToHealthCarePermissions);
}
void ReactToHealthCarePermissions (bool success, NSError error)
{
var access = healthKitStore.GetAuthorizationStatus (HKObjectType.GetQuantityType (HKQuantityTypeIdentifierKey.HeartRate));
if (access.HasFlag (HKAuthorizationStatus.SharingAuthorized)) {
HeartRateModel.Instance.Enabled = true;
} else {
HeartRateModel.Instance.Enabled = false;
}
}
Veškerý kód v těchto metodách může být vložený, OnActivated
ale ukázková aplikace používá samostatné metody, aby bylo jejich záměr jasnější: ValidateAuthorization()
má kroky potřebné k vyžádání přístupu ke konkrétním typům, které jsou napsány (a přečteny, pokud je aplikace požadovaná) a ReactToHealthCarePermissions()
je zpětné volání aktivované po interakci uživatele s dialogovým oknem oprávnění v Health.app.
Úkolem ValidateAuthorization()
je sestavit sadu HKObjectTypes
toho, že aplikace zapíše a požádá o autorizaci k aktualizaci těchto dat. V ukázkové aplikaci HKObjectType
je klíč KHQuantityTypeIdentifierKey.HeartRate
. Tento typ je přidán do sady typesToWrite
, zatímco sada typesToRead
je ponechána prázdná. Tyto sady a odkaz na ReactToHealthCarePermissions()
zpětné volání se předá HKHealthStore.RequestAuthorizationToShare()
.
Zpětné ReactToHealthCarePermissions()
volání bude voláno poté, co uživatel interaguje s dialogovým oknem oprávnění a předá se dvěma informacemi: bool
hodnota, která bude, true
pokud uživatel s dialogovými okny oprávnění pracoval, a která NSError
, pokud není null, označuje určitý druh chyby spojené s prezentováním dialogového okna oprávnění.
Důležité
Chcete-li vymazat argumenty této funkce: parametry úspěchu a chyby neudávají, zda uživatel udělil oprávnění pro přístup k datům sady Health Kit! Označují pouze, že uživateli byla udělena možnost povolit přístup k datům.
Pokud chcete ověřit, jestli má aplikace přístup k datům, HKHealthStore.GetAuthorizationStatus()
použije se předávání HKQuantityTypeIdentifierKey.HeartRate
. Na základě vráceného stavu aplikace povolí nebo zakáže možnost zadávání dat. Neexistuje žádné standardní uživatelské prostředí pro řešení odepření přístupu a existuje mnoho možných možností. V ukázkové aplikaci je stav nastavený na objektu HeartRateModel
singleton, který následně vyvolává relevantní události.
Pokud chcete zkontrolovat HeartRateModel
objekt singleton, otevřete HeartRateModel.cs
soubor:
using System;
using HealthKit;
using Foundation;
namespace HKWork
{
public class GenericEventArgs<T> : EventArgs
{
public T Value { get; protected set; }
public DateTime Time { get; protected set; }
public GenericEventArgs (T value)
{
this.Value = value;
Time = DateTime.Now;
}
}
public delegate void GenericEventHandler<T> (object sender,GenericEventArgs<T> args);
public sealed class HeartRateModel : NSObject
{
private static volatile HeartRateModel singleton;
private static object syncRoot = new Object ();
private HeartRateModel ()
{
}
public static HeartRateModel Instance {
get {
//Double-check lazy initialization
if (singleton == null) {
lock (syncRoot) {
if (singleton == null) {
singleton = new HeartRateModel ();
}
}
}
return singleton;
}
}
private bool enabled = false;
public event GenericEventHandler<bool> EnabledChanged;
public event GenericEventHandler<String> ErrorMessageChanged;
public event GenericEventHandler<Double> HeartRateStored;
public bool Enabled {
get { return enabled; }
set {
if (enabled != value) {
enabled = value;
InvokeOnMainThread(() => EnabledChanged (this, new GenericEventArgs<bool>(value)));
}
}
}
public void PermissionsError(string msg)
{
Enabled = false;
InvokeOnMainThread(() => ErrorMessageChanged (this, new GenericEventArgs<string>(msg)));
}
//Converts its argument into a strongly-typed quantity representing the value in beats-per-minute
public HKQuantity HeartRateInBeatsPerMinute(ushort beatsPerMinute)
{
var heartRateUnitType = HKUnit.Count.UnitDividedBy (HKUnit.Minute);
var quantity = HKQuantity.FromQuantity (heartRateUnitType, beatsPerMinute);
return quantity;
}
public void StoreHeartRate(HKQuantity quantity)
{
var bpm = HKUnit.Count.UnitDividedBy (HKUnit.Minute);
//Confirm that the value passed in is of a valid type (can be converted to beats-per-minute)
if (! quantity.IsCompatible(bpm))
{
InvokeOnMainThread(() => ErrorMessageChanged(this, new GenericEventArgs<string> ("Units must be compatible with BPM")));
}
var heartRateId = HKQuantityTypeIdentifierKey.HeartRate;
var heartRateQuantityType = HKQuantityType.GetQuantityType (heartRateId);
var heartRateSample = HKQuantitySample.FromType (heartRateQuantityType, quantity, new NSDate (), new NSDate (), new HKMetadata());
using (var healthKitStore = new HKHealthStore ()) {
healthKitStore.SaveObject (heartRateSample, (success, error) => {
InvokeOnMainThread (() => {
if (success) {
HeartRateStored(this, new GenericEventArgs<Double>(quantity.GetDoubleValue(bpm)));
} else {
ErrorMessageChanged(this, new GenericEventArgs<string>("Save failed"));
}
if (error != null) {
//If there's some kind of error, disable
Enabled = false;
ErrorMessageChanged (this, new GenericEventArgs<string>(error.ToString()));
}
});
});
}
}
}
}
První část je často používaný kód pro vytváření obecných událostí a obslužných rutin. Počáteční část HeartRateModel
třídy je také často používaný pro vytvoření jednoprocesového objektu bezpečného pro přístup z více vláken.
HeartRateModel
Pak zveřejní 3 události:
EnabledChanged
– Označuje, že je povolené nebo zakázané úložiště srdeční frekvence (mějte na paměti, že úložiště je zpočátku zakázané).ErrorMessageChanged
- Pro tuto ukázkovou aplikaci máme velmi jednoduchý model zpracování chyb: řetězec s poslední chybou .HeartRateStored
- Vyvolá se, když je srdeční frekvence uložena v databázi Health Kit.
Všimněte si, že kdykoli se tyto události aktivují, provádí se prostřednictvím NSObject.InvokeOnMainThread()
, což umožňuje odběratelům aktualizovat uživatelské rozhraní. Události je také možné zdokumentovat jako vyvolání na podprocesech na pozadí a odpovědnost za zajištění kompatibility na jejich obslužných rutinách. Aspekty vláken jsou důležité v aplikacích sady Health Kit, protože mnoho funkcí, jako je například žádost o oprávnění, jsou asynchronní a spouští jejich zpětná volání na jiných než hlavních vláknech.
Kód specifický HeartRateModel
pro Heath Kit je ve dvou funkcích HeartRateInBeatsPerMinute()
a StoreHeartRate()
.
HeartRateInBeatsPerMinute()
převede jeho argument na sadu Health Kit HKQuantity
silného typu . Typ množství je ten, který určuje HKQuantityTypeIdentifierKey.HeartRate
množství a jednotky množství jsou HKUnit.Count
rozděleny HKUnit.Minute
(jinými slovy, jednotka je porazit za minutu).
Funkce StoreHeartRate()
přebírá HKQuantity
(v ukázkové aplikaci, kterou vytvořila HeartRateInBeatsPerMinute()
). K ověření dat používá metodu HKQuantity.IsCompatible()
, která vrátí true
, pokud je možné jednotky objektu převést na jednotky v argumentu. Pokud se množství vytvořilo s HeartRateInBeatsPerMinute()
tímto způsobem, samozřejmě se vrátí true
, ale vrátí se také true
v případě, že bylo množství vytvořeno jako například Beats za hodinu. Častěji HKQuantity.IsCompatible()
se dá použít k ověření hmotnosti, vzdálenosti a energie, kterou může uživatel nebo zařízení zadávat nebo zobrazovat v jednom systému měření (například Imperial jednotky), ale které mohou být uloženy v jiném systému (například v metrických jednotkách).
Po ověření HKQuantitySample.FromType()
kompatibility množství se metoda továrny použije k vytvoření objektu silného typu heartRateSample
. HKSample
objekty mají počáteční a koncové datum; pro okamžité čtení by tyto hodnoty měly být stejné, jako jsou v příkladu. Ukázka také nenastavuje v argumentu HKMetadata
žádná data klíč-hodnota, ale jeden může použít kód, například následující kód k určení umístění senzoru:
var hkm = new HKMetadata();
hkm.HeartRateSensorLocation = HKHeartRateSensorLocation.Chest;
heartRateSample
Po vytvoření kódu se vytvoří nové připojení k databázi pomocí bloku using. V rámci daného bloku se HKHealthStore.SaveObject()
metoda pokusí o asynchronní zápis do databáze. Výsledné volání výrazu lambda aktivuje relevantní události nebo HeartRateStored
ErrorMessageChanged
.
Teď, když je model naprogramovaný, je čas zjistit, jak kontroler odráží stav modelu. Otevřete soubor HKWorkViewController.cs
. Konstruktor jednoduše zřetědí metodu HeartRateModel
zpracování událostí s jednímtonem (opět to lze provést v souladu s výrazy lambda, ale samostatné metody zvýrazní záměr trochu jasněji):
public HKWorkViewController (IntPtr handle) : base (handle)
{
HeartRateModel.Instance.EnabledChanged += OnEnabledChanged;
HeartRateModel.Instance.ErrorMessageChanged += OnErrorMessageChanged;
HeartRateModel.Instance.HeartRateStored += OnHeartBeatStored;
}
Tady jsou relevantní obslužné rutiny:
void OnEnabledChanged (object sender, GenericEventArgs<bool> args)
{
StoreData.Enabled = args.Value;
PermissionsLabel.Text = args.Value ? "Ready to record" : "Not authorized to store data.";
PermissionsLabel.SizeToFit ();
}
void OnErrorMessageChanged (object sender, GenericEventArgs<string> args)
{
PermissionsLabel.Text = args.Value;
}
void OnHeartBeatStored (object sender, GenericEventArgs<double> args)
{
PermissionsLabel.Text = String.Format ("Stored {0} BPM", args.Value);
}
Samozřejmě, v aplikaci s jedním kontrolerem by bylo možné zabránit vytvoření samostatného objektu modelu a použití událostí pro tok řízení, ale použití objektů modelu je vhodnější pro reálné aplikace.
Simulátor iOS nepodporuje Sadu Health Kit. Ladění musí být provedeno na fyzickém zařízení s iOSem 8.
Připojte k systému správně zřízené vývojové zařízení s iOSem 8. Vyberte ho jako cíl nasazení v Visual Studio pro Mac a v nabídce zvolte Spustit > ladění.
Důležité
V tuto chvíli se zobrazí chyby související se zřizováním. Pokud chcete vyřešit chyby, projděte si část Vytvoření a zřízení aplikace sady Health Kit výše. Součásti jsou:
- iOS Dev Center – Explicitní id aplikace a profil zřizování s povolenou sadou Health Kit
- Možnosti projektu – identifikátor sady (explicitní ID aplikace) a profil zřizování
- Zdrojový kód – Entitlements.plist & Info.plist
Za předpokladu, že byla správně nastavena ustanovení, aplikace se spustí. Jakmile dosáhne své OnActivated
metody, požádá o autorizaci sady Health Kit. Při prvním spuštění operačního systému se uživateli zobrazí následující dialogové okno:
Povolte aplikaci, aby aktualizovala data tepové frekvence a vaše aplikace se znovu zobrazí. Zpětné ReactToHealthCarePermissions
volání se aktivuje asynchronně. To způsobí HeartRateModel’s
Enabled
, že se vlastnost změní, což vyvolá EnabledChanged
událost, což způsobí HKPermissionsViewController.OnEnabledChanged()
spuštění obslužné rutiny StoreData
události, která povolí tlačítko. Následující diagram znázorňuje posloupnost:
Stiskněte tlačítko Záznam. To způsobí StoreData_TouchUpInside()
spuštění obslužné rutiny, která se pokusí parsovat hodnotu textového heartRate
pole, převést na HKQuantity
prostřednictvím dříve popisované HeartRateModel.HeartRateInBeatsPerMinute()
funkce a předat toto množství HeartRateModel.StoreHeartRate()
. Jak jsme už probrali dříve, pokusí se uložit data a vyvolá se HeartRateStored
událost nebo ErrorMessageChanged
událost.
Poklikejte na tlačítko Domů na svém zařízení a otevřete aplikaci Stav. Klikněte na kartu Zdroje a zobrazí se ukázková aplikace. Zvolte ho a zakažte oprávnění k aktualizaci dat tepové frekvence. Poklikejte na tlačítko Domů a přepněte zpátky do aplikace. Znovu bude volána, ale tentokrát, protože přístup byl odepřen, tlačítko StoreData se zakáže (všimněte si, ReactToHealthCarePermissions()
že k tomu dochází asynchronně a změna uživatelského rozhraní může být viditelná pro koncového uživatele).
Čtení dat z databáze sady Health Kit je velmi podobné zápisu dat: jeden určuje typy dat, které se snaží získat přístup, požádat o autorizaci a pokud je tato autorizace udělena, jsou data k dispozici s automatickým převodem na kompatibilní měrné jednotky.
Existuje řada sofistikovanějších funkcí dotazů, které umožňují dotazům a dotazům založeným na predikátech, které provádějí aktualizace při aktualizaci relevantních dat.
Vývojáři aplikací Health Kit by si měli projít část Health Kit v Pokynech pro kontrolu aplikací společnosti Apple.
Jakmile jsou modely zabezpečení a systému typů srozumitelné, ukládání a čtení dat ve sdílené databázi Health Kit je poměrně jednoduché. Mnoho funkcí v rámci sady Health Kit funguje asynchronně a vývojáři aplikací musí správně psát své programy.
V době psaní tohoto článku v současné době neexistuje žádný ekvivalent sady Health Kit v Androidu nebo Windows Phone.
V tomto článku jsme viděli, jak Health Kit umožňuje aplikacím ukládat, načítat a sdílet informace související se stavem a zároveň poskytuje standardní aplikaci Health, která umožňuje uživatelům přístup k datům a kontrolu nad nimi.
Viděli jsme také, jak ochrana osobních údajů, zabezpečení a integrita dat mají zásadní vliv na informace a aplikace související se stavem a aplikace využívající Sadu Health Kit, které využívají Sadu Health Kit, musí se vypořádat se zvýšením složitosti aspektů správy aplikací (zřizování), kódováním (systém typů sady Health Kit) a uživatelským prostředím (uživatelská kontrola oprávnění prostřednictvím systémových dialogových oken a aplikace Health).
Nakonec jsme se podívali na jednoduchou implementaci sady Health Kit pomocí zahrnuté ukázkové aplikace, která zapisuje data prezenčních signálů do úložiště Health Kit a má asynchronní návrh.