2015-08-05 20 views
5

sto usando iOS 9 beta 4 e watchos 2 beta 4.HKWorkoutSession: Non ottenere frequenza cardiaca quando lo schermo è spento in watchos 2

io non riesco a ottenere tutti i dati della frequenza cardiaca quando lo schermo si orologio nero (serrature). Riceverò una chiamata allo applicationWillResignActive e quindi i dati sulla frequenza cardiaca si interrompono.

Sembra che il sensore si disattivi anche dopo un po 'di tempo (non più verde), quando lo schermo si blocca.

Chiunque altro vede questo comportamento? Posso postare il mio codice per accedere alla sessione di allenamento se qualcun altro riceve dati sulla frequenza cardiaca quando lo schermo dell'orologio è bloccato.

risposta

2

La piattaforma di app orologio è progettata per disabilitare completamente il codice poco dopo applicationWillResignActive(). Tuttavia, con una HKWorkoutSession attiva, l'orologio dovrebbe registrare i dati della frequenza cardiaca nell'archivio HK in background (a condizione che un'altra app di controllo non ne avvii una nuova e annulli la tua).

Questo è più o meno quello che faccio per avviare la raccolta della frequenza cardiaca:

func startCollectingHR(){ 
    guard workoutSession == nil else{return} // Make sure it's not already started 
    // Also make sure you get the appropriate HealthKit permissions 
    workoutSession = HKWorkoutSession(activityType: HKWorkoutActivityType.CrossTraining, locationType: HKWorkoutSessionLocationType.Outdoor) 
    workoutSession!.delegate = self 
    healthStore.startWorkoutSession(workoutSession!) 
    print("HR collection started.") 
} 

Purtroppo, non ho trovato un modo per ottenere la frequenza cardiaca a vivere-stream in modo affidabile ovunque fuori dal negozio HealthKit sull'orologio.

0

Ho notato un comportamento simile e ho scoperto che la prima sessione di allenamento sarebbe stata eseguita come previsto, ma quelle successive sarebbero state eseguite solo quando il quadrante dell'orologio era attivo. Ho risolto il problema reimpostando HKWorkoutSession una volta completata la sessione.

3

A partire da watchOS 3.0 è possibile aggiungere la voce WKBackgroundModes con il valore workout-processing a Info.plist dell'interno.

Dal docs:

esecuzione nelle sessioni Sfondo di allenamento può essere eseguito in background. Lo sfondo in esecuzione concede a un'app le seguenti abilità:

L'applicazione continua a essere eseguita durante l'intera sessione di allenamento, anche quando l'utente abbassa il polso o interagisce con un'altra app. Quando l'utente solleva il polso, l'app riappare, consentendo all'utente di verificare rapidamente e facilmente l'avanzamento e le prestazioni correnti dell'utente .

L'app può continuare ad accedere ai dati dai sensori di Apple Watch nello sfondo , consentendo di mantenere l'app sempre aggiornata. Per l'esempio , un'app in esecuzione può continuare a tracciare la frequenza cardiaca dell'utente, assicurandosi che i dati della frequenza cardiaca più recenti vengano visualizzati ogni volta che l'utente alza il polso.