Cómo integrar healthkit en un proyecto de xamarin-PARTE I

1. ¿Qué es HealthKit?

Desde iOS 8, Apple nos ofrece un SDK para temas relativos a salud, que a su vez nos ofrece una API para recopilar en un mismo sitio datos de: Actividad física, sueño, alimentación, medidas corporales, etc.

HealthKit proporciona un almacén de datos seguro para toda esta información. Las aplicaciones de HealthKit pueden, con el permiso explícito del usuario, leer y escribir en este almacén de datos y recibir notificaciones cuando se agreguen los datos pertinentes.

Las aplicaciones pueden presentar los datos, o los usuarios pueden usar la aplicación Health proporcionada por Apple para ver un tablero con todos sus datos.

Debido a que los datos relacionados con la salud son tan sensibles y cruciales, Health Kit está fuertemente tipado, con unidades de medida y una asociación explícita con el tipo de información que se registra (por ejemplo, el nivel de glucosa en sangre o frecuencia cardiaca). Además, las aplicaciones de HealthKit deben usar derechos explícitos, deben solicitar acceso a los tipos de información particulares y el usuario debe otorgar explícitamente a la aplicación acceso a este tipo de datos.

En este post vamos a ver lo siguiente: 

  • Requisitos de seguridad del Kit de salud, incluido el aprovisionamiento de la aplicación y el permiso del usuario para acceder a la base de datos del kit de salud.
  • Los tipos de datos de HealthKit que ayudan a minimizar la posibilidad de aplicar o malinterpretar mal los datos
  • Escribir en el almacén de datos de HealthKit compartido en todo el sistema.
  • Consultar datos del almacén de HealthKit.

Todo esto lo vamos a utilizar dentro de una aplicación que va a realizar dos acciones: la primera es registrar nuestra frecuencia cardiaca, para más tarde ver nuestras medidas corporales. 

NOTA: Es importante tener en cuenta que a día de hoy Apple no obliga a tomar los datos desde un dispositivo «licenciado», pero sí lo aconseja. Esto significa que de momento nos deja introducir datos a mano desde una interfaz, pero en un futuro es posible que estemos obligados a introducir estos datos desde un dispositivo licenciado por Apple, como puede ser un SmartWatch o una báscula inteligente (con conexión de datos).

2. Requisitos y primeros pasos: 

Los requerimientos son los siguientes:

  • XCode 7 y target iOS 8 o superior, si bien, en iOS 8 es necesario ejecutar las aplicaciones en dispositivo físico, en emulador no está disponible.
  • Visual Studio for Mac o Xamarin Studio. 
  • Una cuenta de desarrollo de Apple para crear los certificados correspondientes.

Primeros pasos: 

En primer lugar, vamos a crear nuestra aplicación. Una aplicación en blanco; Y vamos a crear en nuestra cuenta de desarrollo una aplicación con el BundleID correspondiente. En la creación del ID de aplicación debemos chequear la casilla de HealthKit. Crearemos los provisioning de dicha app y descargamos todos los ficheros desde Xcode:

Cabe destacar que, aunque estemos desarrollando sobre el emulador, necesitamos añadir este certificado de desarrollador para que HealthKit funcione correctamente.

Por último, tendremos que añadir a el entiement.plist el check de la opción HealthKit y a nuestro Info.plist la clave «healthkit» dentro de la regla «UIRequieredDeviceCapabilities».

Para ello, nos dirigimos, dentro del info.plist a la pestaña Source. Allí encontraremos Required device capabilities, y añadiremos una nueva Key de tipo string, con el valor HealthKit.

También desde iOS 10 tenemos que añadir las claves de privacidad tanto de Update como de Share (Escribir y leer) con un mensaje descriptivo.

¡Ya tenemos nuestro proyecto preparado para usar el HealthKit!

3. Tipos de datos de HealthKit

Los datos del kit de salud están limitados a los tipos especificados por Apple. Estos tipos están estrictamente definidos: algunos, como el tipo de sangre, están limitados a los valores particulares de una enumeración suministrada por Apple, mientras que otros combinan una magnitud con una unidad de medida (como gramos, calorías o litros).

Incluso los datos que comparten una unidad de medida compatible se distinguen por su HKObjectType; por ejemplo, el sistema de tipos detectará un intento erróneo de almacenar un valor HKQuantityTypeIdentifier.

NumberOfTimesFallen en un campo que espera un HKQuantityTypeIdentifier.FlightsClimbed, aunque ambos usen la unidad de medida HKUnit.Count.

Los tipos almacenables en HealthKit son todas las subcases de HKObjectType. Los objetos HKCharacteristicType almacenan género, tipo de sangre y fecha de nacimiento.

Sin embargo, son más comunes los objetos HKSampleType, que representan los datos que se muestran en un momento específico o durante un periodo de tiempo.

Para no hacer el post demasiado largo, hemos decidido dividirlo en dos partes. En la segunda parte, os contaremos cómo empezar a introducir datos en nuestra app y cómo realizar la lectura y escritura de los datos.

¡No os lo perdáis!

¡Os recordamos que el próximo día 23 de Marzo impartiremos un webinar sobre IoT que tampoco os podéis perder!

¡Todo el mundo a apuntarse! 😉