2015-07-04 3 views
6

Es wurde festgestellt, dass eine App, die eine HKWorkoutSession ausführt, spezielle Berechtigungen gegenüber anderen watchOS 2-Apps hat. Wenn ein Benutzer seine Apple Watch anschaut, wird die Ansicht angezeigt Zeige, dass man eher ein Workout als das Uhrgesicht ausführt.HKWorkoutSession hält die App nicht an der Vorderseite der Apple Watch

Momentan ist dies auf meinem Gerät und Simulator nicht der Fall. Wenn ich eine HKWorkoutSession starte und dann 5 Minuten lang gehe und dann entweder mit der Apple Watch oder dem Watch Simulator interagiere, wird das Zifferblatt angezeigt.

Wenn ich dann meine App öffne, scheint sie eingefroren worden zu sein, anstatt beendet zu werden (was ich mir vorstelle passiert mit anderen Apps). Wie die Benutzeroberfläche aktualisiert wird, wenn ich eine Antwort in meinem query.updateHandler erhalten muss. Auch wenn ich jedesmal, wenn mein query.updateHandler einen neuen HKQuantitySample erhält, haptisches Feedback geben werde, so wird dies auch geschehen, also muss die App in irgendeiner Form im Hintergrund laufen.

Hat jemand anderes dieses Verhalten bemerkt, und tue ich etwas falsch oder erwarte etwas, was ich nicht tun sollte?

Hier ist, wie ich meine HKWorkoutSession starten:

self.workoutSession = HKWorkoutSession(activityType: HKWorkoutActivityType.Other, locationType: HKWorkoutSessionLocationType.Indoor) 

     self.healthStore.startWorkoutSession(self.workoutSession) { 
      success, error in 

      if error != nil { 
       print("startWorkoutSession \(error)\n") 
       self.printLabel.setText("startWorkoutSession \(error)") 
       self.printLabel.setTextColor(UIColor.redColor()) 
      } 
+0

Nach weiteren Untersuchungen habe ich entschieden, dass mein Code weiterhin im Hintergrund läuft, und dass ich Code haben sollte, um die Benutzeroberfläche von willActivate zu aktualisieren, anstatt auf eine neue Abfrage zu warten. Ich halte das etwas länger offen, da es keine eindeutige Antwort darauf gibt, warum die App nicht im Vordergrund bleibt. –

+1

Hast du versucht, die Einstellung auf der AppleWatch zu ändern, die die letzte Aktivität beim Handgelenkheben öffnet? In der AppleWatch App auf IOS General. Wenn dies für Ihre Benutzer wichtig ist, könnten Sie sie auffordern, die Einstellung zu ändern. – Philip

+0

Ja, das ist eine gute Idee, wenn dieser "Bug" zum Standardverhalten wird. Im Idealfall möchte ich aber den Benutzer nicht zwingen, seinen Apple Watch "Workflow" nur für meine App zu ändern. –

Antwort

2

Wir sehen, dass auch für den Moment, wo wir sichergestellt haben, ‚öffnet letzte Aktivität‘ konfiguriert ist.

Wenn die Benutzeroberfläche aktiv ist, starten wir einen Dispatch_timer, um Daten in 1-Sekunden-Intervallen anzufordern und zu verarbeiten.

Stellen Sie sicher, dass Sie eine signifikante Verarbeitung mit der NSUserProcessInfo-Methode durchführen, und pausieren Sie die dispatch_timers, wenn Sie nicht mehr aktiv sind. Andernfalls werden Sie Abstürze bekommen.

+0

Was ist NSUserProcessInfo? Bei der Suche finde ich nur NSProcessInfo & das scheint nur OS X zu sein. Ich stürze ziemlich schnell ab. Ich muss prüfen, ob ich eine haptische Vibration senden soll, nachdem eine Probe zurückgegeben wurde, und das muss geschehen, wenn die Benutzeroberfläche nicht aktiv ist. –

+0

Interessanterweise bekomme ich beim Konfigurieren der letzten Aktivität viel weniger Herzfrequenzdaten, aber keine Abstürze. –

+1

Tut mir leid, ich habe das aus dem Speicher gemacht, es ist eigentlich: 'NSProcessInfo.processInfo(). PerfectExpiringActivityWithReason'. Es gibt einen Block, der auslaufende Tasks ausführt, wenn der Bildschirm inaktiv wird. Re: Herzfrequenz Ich glaube, dass es in der Beta-Version steht, dass es momentan keine Herzfrequenz misst, während der Bildschirm inaktiv ist. Es ist ein bekannter Fehler. – earltedly

Verwandte Themen