¿Cómo resuelve HealthKit el registro de la misma actividad por múltiples fuentes?

¿Qué sucede cuando más de una "fuente" registrada con HealthKit rastrea la misma actividad?

Por ejemplo, si tengo Human rastreando mi actividad en general, y luego uso Cyclemeter (que es compatible con HealthKit en la versión 10.3) para rastrear un paseo en bicicleta en particular, ambos (supongo) enviarán la misma actividad a HealthKit. Presumiblemente, HealthKit debería poder reconocer que estas actividades son probablemente duplicados y al menos preguntarme cómo resolver la "duplicación" (tanto como se resuelven los conflictos de sincronización). De hecho, las actividades contienen suficientes datos como para que, en general, dicho reconocimiento sea posible de realizar de forma automática.

¿Hace HealthKit esto? ¿Resuelve grabaciones duplicadas de la misma actividad (ya sea de forma automática o semiautomática)?

Esto podría ser prematuro ya que Cyclemeter 10.3 aún no se ha lanzado a la tienda de aplicaciones. Apple claramente está cambiando el código del kit de salud con la versión 8.0.2 de iOS.
@bmike: Cyclemeter es solo un ejemplo: la pregunta se aplica a dos o más fuentes.
AFAIK , no hay aplicaciones en la tienda de aplicaciones que inyecten datos en el kit de salud, por lo que sugiero que esto es prematuro. Estoy seguro de que los desarrolladores han sabido desde junio cómo Apple ha codificado las cosas para que funcionen, pero hasta que el código salga a la calle no sabremos qué es lo que Apple realmente ha codificado y lanzado. Mi conjetura es que los datos se etiquetarán por nombre de dominio inverso y obtendrá dos conjuntos de datos distintos sin fusión, pero eso es solo conjetura en este punto.
@bmike: Varias aplicaciones ahora (8.0.2) funcionan con HealthKit como fuentes. Revisa la tienda de aplicaciones.
¿Por qué no editar en aplicaciones específicas que realmente funcionan en su pregunta?

Respuestas (2)

HealthKit es bastante inteligente con sus datos. Para cada fuente en la aplicación Salud, puede establecer la prioridad de las diferentes aplicaciones. Toque una de las métricas en la aplicación Salud, toque Compartir datos > Editar para arrastrar las fuentes en el orden correcto.

Si otras aplicaciones solicitan datos, HealthKit combinará automáticamente los conjuntos de datos, probablemente en función de las marcas de tiempo. Primero elige la aplicación de alta prioridad y llena los vacíos en los datos con la aplicación número 2, etc.

Esta WWDC sería un gran comienzo para obtener una visión general completa .

Por lo que investigué, la respuesta de Paul Veugen es solo parcialmente cierta. HealthKit fusiona estos datos si usa HKStatisticsQuery o HKStatisticsCollectionQuery. De lo contrario, dependerá de usted proporcionar una lógica para fusionar/deduplicar los resultados.

Una posible solución podría ser usar HKSourceQuery para identificar diferentes fuentes y, por ejemplo, seleccionar solo una.

Otra podría ser acceder a la fuente a través de HKSourceRevision en los resultados de una HKQuery y solo tomar los datos de una fuente o intentar comparar datos de diferentes fuentes. A partir de iOS 9.3 también existe la posibilidad de acceder a los diferentes dispositivos fuente mediante HKDevice.

Tomar un dispositivo siempre lo dejará con la posibilidad de que un usuario no haya usado parcialmente el dispositivo durante el período de tiempo solicitado, lo que conducirá a la falta de puntos de datos.

Debido a esto, los resultados de priorización seguirán siendo dolorosos, ya que Apple no documentó, si los datos solicitados se ordenarán por la prioridad de origen definida por el usuario en Salud.

Dicho esto, podría valer la pena buscar rangos de fechas superpuestas para identificar duplicados.