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:
Požadavky
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.
Vytvoření a zřízení aplikace sady Health Kit
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í.
Explicitní ID aplikace a profil zřizování
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:
Přidružení ID aplikace a zřizovací profil k aplikaci Xamarin.iOS
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.
Hodnoty Entitlements.plist a Info.plist
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.
Programovací sada Health Kit
Ú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
.
Žádost o oprávnění od uživatele
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í.
Návod k oprávněním
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.
Model, zobrazení a kontroler
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.
Spuštění ukázkové 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).
Pokročilá témata
Č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.
Shrnutí
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.