2015-07-04 3 views
6

Было заявлено, что приложение под управлением HKWorkoutSession будет иметь особые привилегии над другими приложениями watchOS 2, поэтому, когда пользователь смотрит на их Apple Watch, он перейдет к представлению показывая работу тренировки, а не лицо часов.HKWorkoutSession не поддерживает приложение перед Apple Watch

В настоящее время, как на моем устройстве, так и на симуляторе, это не тот случай. Если я начну HKWorkoutSession, а затем уйду в течение 5 минут, а затем взаимодействую с Apple Watch или с симулятором часов, он представляет лицо часов.

Если я затем открою свое приложение, оно, кажется, было заморожено, а не прекращено (что, как я понимаю, случается с другими приложениями). Поскольку пользовательский интерфейс будет обновляться, когда мне нужно получить ответ в моем request.updateHandler. Кроме того, если я установил его для обеспечения тактической обратной связи каждый раз, когда мой запрос.updateHandler получает новый HKQuantitySample, он сделает это, поэтому приложение должно работать в фоновом режиме в некоторой форме.

Кто-нибудь еще заметил это поведение, и я делаю что-то неправильно или ожидаю чего-то, чего я не должен?

Вот как я начинаю HKWorkoutSession:

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

После дальнейшего изучения я решил, что мой код продолжает работать в фоновом режиме, и что у меня должен быть код для обновления пользовательского интерфейса на willActivate, а не на ожидание нового запроса. Я буду держать это открытым немного дольше, потому что нет определенного ответа на вопрос, почему приложение не остается на переднем плане. –

+1

Вы пытались изменить настройку на AppleWatch, которая открывает последнее действие на подтягивание запястья? В приложении AppleWatch на IOS General. ЕСЛИ это важно для ваших пользователей, вы можете предложить им изменить настройку – Philip

+0

Да, это приличная идея, если эта «ошибка» становится по умолчанию. В идеале, хотя я не хочу заставить пользователя менять рабочий процесс Apple Watch только для моего приложения. –

ответ

2

Мы видим, что тоже, на данный момент мы убедились «открывает последнюю активность» сконфигурировано.

Когда пользовательский интерфейс активен, мы запускаем dispatch_timer для запроса и обработки данных с интервалом в 1 секунду.

Убедитесь, что вы выполняете какую-либо значительную обработку с использованием метода NSUserProcessInfo и приостанавливаете dispatch_timers, когда вы больше не активны. В противном случае вы получите сбои.

+0

Что такое NSUserProcessInfo? При поиске я нахожу только NSProcessInfo, и это похоже только на OS X. Я получаю аварии довольно быстро. Мне нужно проверить, должен ли я посылать гапловую вибрацию после возвращения образца, и это должно произойти, когда пользовательский интерфейс не активен. –

+0

Интересно, когда у меня настроено «открытие последней активности», я получаю гораздо меньше данных о сердечном ритме, но никаких сбоев нет. –

+1

Извините, я делал это из памяти, это на самом деле: 'NSProcessInfo.processInfo(). PerformExpiringActivityWithReason'. Он дает блок, который будет выполнять истекающие задачи, после чего экран будет неактивным. Re: частота сердечных сокращений Я считаю, что в бета-релизе отмечается, что в настоящее время он не измеряет частоту сердечных сокращений, пока экран неактивен. Это известная ошибка. – earltedly