La Red de Conocimientos Pedagógicos - Currículum vitae - HealthKit es sencillo y práctico

HealthKit es sencillo y práctico

HealthKit proporciona un depósito central de datos de salud y fitness en iPhone y Apple Watch. Con el permiso del usuario, la aplicación se comunica con la tienda HealthKit para acceder y disfrutar de estos datos.

El marco HealthKit está diseñado para compartir datos entre aplicaciones de forma significativa. El marco limita los tipos de datos y celdas a una lista predefinida, asegurando que todas las aplicaciones comprendan lo que significan los datos y cómo usarlos. Los desarrolladores no pueden crear celdas o tipos de datos personalizados. Por el contrario, HealthKit proporciona una variedad de tipos y unidades de datos.

Además, el marco utiliza una gran cantidad de subclases, lo que da como resultado una jerarquía profunda similar a la de clases. A menudo, existen diferencias sutiles pero importantes entre estas clases. Por ejemplo, el objeto HKQuantitySample se usa para almacenar datos con valores numéricos, mientras que el objeto HKCategorySample se usa para almacenar valores seleccionados de una enumeración.

HealthKit guarda múltiples tipos de datos:

La clase HKObject es la clase principal de todos los tipos de muestra de HealthKit. Todas las subclases de HKObject son inmutables. Cada objeto tiene las siguientes propiedades:

La clase HKSample es una subclase de HKObject. Los objetos de muestra representan datos en un momento específico y todos los objetos de muestra son subclases de la clase HKSample.

HKSample se divide a su vez en cuatro subclases específicas:

El almacenamiento de HealthKit es seguro para subprocesos y la mayoría de los objetos de HealthKit son inmutables. En general, HealthKit es seguro de usar en un entorno de subprocesos múltiples.

Antes de usar HealthKit, debe realizar los siguientes pasos:

Antes de usar HealthKit, debe agregar la funcionalidad HealthKit a su aplicación. En Xcode, seleccione el proyecto y active la función HealthKit.

Llame al método isHealthDataAvailable para asegurarse de que HealthKit esté disponible en el dispositivo del usuario.

Llame a este método antes de llamar a otros métodos de HealthKit. Si HealthKit no está disponible en el dispositivo (por ejemplo, en un iPad), llamar a otros métodos informará un error HealthDataUnavailable; si HealthKit está restringido (por ejemplo, en un entorno empresarial), llamar a otros métodos informará un error HealthDataRestricted.

Si HealthKit está disponible y abierto, cree una instancia del objeto HKHealthStore:

Cada aplicación solo necesita una tienda HealthKit, que es un objeto de larga duración.

Para proteger la privacidad del usuario, HealthKit requiere una autorización detallada. Debe solicitar permiso para leer y compartir los datos antes de intentar guardarlos y acceder a ellos.

Además, debe configurar dos claves en el archivo info.plist:

Si el usuario acepta * * * disfrutar de un determinado tipo de datos, puede crear una muestra de este tipo, guardado en la Tienda HealthKit. Sin embargo, antes de guardar cualquier dato, es una buena idea llamar al método AuthorizationStatusForType: para verificar si tiene el permiso. Si no ha solicitado este permiso, al guardar los datos se generará un error HKErrorauthorationNotDetermined. Si el usuario niega la solicitud de permiso, intentar guardar los datos generará el error HKErrorAuthorizationDenied.

Para proteger la privacidad del usuario, nuestra aplicación no sabrá si el usuario ha autorizado o denegado el derecho a leer HealthKit.

Si el usuario se niega, al consultar datos de HealthKit, solo se devolverán los datos de muestra que nuestra propia aplicación guardó con éxito en la tienda HealthKit.

Si su aplicación requiere acceso a datos de registros clínicos específicos para funcionar correctamente, agregue la clave NSHEALTH REQUIRED READ AuthorizationTypeIdentifiers al archivo info.plist, que define los tipos de datos para los que la aplicación debe tener permisos de lectura.

Nuestra aplicación puede crear nuevas muestras y guardarlas en la tienda HealthKit. Aunque todos los tipos de muestra siguen un flujo similar, cada tipo tiene sus propias variaciones:

Cada subclase de HKSample tiene su propio método conveniente para crear instancias de objetos.

Para muestras cuantitativas, cree una instancia de la clase HKQuantity. Las unidades de cantidad deben ser consistentes con las unidades descritas en el archivo identificador de tipo. Por ejemplo, HKQuantityTypeIdentifierHeight declara la unidad de longitud, por lo que la cantidad debe estar en centímetros, metros, pies o pulgadas u otras unidades compatibles. Puede consultar HKQuantitySample.

Para muestras de categorías, los valores de la muestra deben corresponder a la enumeración declarada en el documento identificador de tipo. Por ejemplo, el análisis del sueño del identificador de tipo hkcategory indica que utiliza la enumeración HKCategoryValueSleepAnalysis. Por lo tanto, al crear este ejemplo, debe seleccionar un valor de esta enumeración. Para obtener más información, consulte HKCategorySample

Al guardar datos en el almacenamiento de HealthKit, a menudo debe elegir entre usar una sola muestra para representar los datos o dividir los datos en varias muestras más pequeñas. Desde una perspectiva de rendimiento, es mejor usar una sola muestra, pero varias muestras pueden brindar a los usuarios una comprensión más detallada de cómo cambian sus datos con el tiempo. Idealmente, podemos encontrar un tamaño de muestra adecuado que proporcione a los usuarios datos históricos útiles.

Al registrar datos de ejercicio, se pueden utilizar datos de alta frecuencia (una muestra por minuto) para proporcionar iconos de intensidad y analizar de otro modo el rendimiento del usuario en el ejercicio. Para actividades menos intensas, como los pasos diarios, suele ser mejor una muestra de una hora o menos.

Las aplicaciones deben evitar almacenar muestras durante 24 horas o más.

Las aplicaciones de salud permiten a los usuarios acceder a todos los datos de su tienda HealthKit. Los usuarios pueden ver, agregar, eliminar y administrar sus datos.

Específicamente, los usuarios pueden

Así que las aplicaciones de salud tienen algunos impactos importantes en el desarrollo de HealthKit. Los usuarios pueden modificar datos fuera de nuestra aplicación e incluso modificar los permisos de lectura y escritura de nuestra aplicación. Por lo tanto, nuestra aplicación siempre debe consultar la tienda HealthKit para obtener datos actuales.

En segundo lugar, también podemos ver los datos guardados por nuestra aplicación en la tienda de salud en la aplicación de salud. Esto es muy útil en las primeras pruebas.

Hay tres formas principales de leer datos de la tienda HealthKit.

La consulta devuelve la instantánea actual de los datos en el almacenamiento de HealthKit. Todas las consultas se ejecutan en una cola anónima en segundo plano. Cuando se complete la consulta, procesará los resultados en la cola en segundo plano. HealthKit proporciona diferentes tipos de consultas para devolver diferentes tipos de datos.

La consulta de larga duración se ejecutará continuamente en una cola anónima en segundo plano y actualizará nuestra aplicación cuando cambie la tienda HealthKit. Además, las consultas de los observadores se pueden registrar para su entrega en segundo plano. De esta forma, cuando se produzca una actualización, HealthKit activará nuestra aplicación en segundo plano.

HealthKit proporciona las siguientes consultas de larga duración:

HealthKit utiliza subclases de HKObjectType para identificar los diferentes tipos de datos almacenados en HealthKit:

Para crear objetos de tipo , debe llamar al método de clase HKObjectType correspondiente y pasar el identificador de tipo requerido.

Puede utilizar el tipo de objeto generado para solicitar permiso para acceder a los datos, guardar datos nuevos en el almacenamiento de HealthKit o leer datos del almacenamiento de HealthKit.

La mayoría de los datos de salud y fitness se guardan en las tiendas HealthKit utilizando subclases de HKSample. Todas las subclases de muestra registran información en el momento especificado. Si los atributos startDate y endDate de la muestra son los mismos, la muestra representa un momento determinado. Si la fecha de finalización es posterior a la fecha de inicio, la muestra representa un intervalo de tiempo.

HealthKit utiliza diferentes subclases de HKSample para almacenar diferentes tipos de datos: