Как открыть приложение для часов из родительского приложения iOS?

Мне нужно открыть расширение для часов из моего родительского приложения для iOS. Я видел похожую функцию в приложении Nike+ Run Club. т. е. когда пользователь нажимает кнопку «Пуск» в родительском приложении, мгновенно открывается расширение комплекта часов.


person samad5353    schedule 27.03.2017    source источник
comment
это делается с помощью метода startWatchApp(with:completion:) HKHealthStore. Приложение для iOS настраивает тренировку, отправляет ее на часы, а часы могут ее запускать или нет, но это можно сделать только тогда, когда приложение iOS находится на переднем плане. developer.apple.com/reference/healthkit/hkhealthstore/   -  person abjurato    schedule 27.03.2017


Ответы (1)


Как сказал @abjurato, вы можете запустить его только в «режиме тренировки».

import HealthKit
import WatchConnectivity
let healthStore = HKHealthStore()

func startWatchApp() {
    print("method called to open app ")

    getActiveWCSession { (wcSession) in
        print(wcSession.isComplicationEnabled, wcSession.isPaired)
        if wcSession.activationState == .activated && wcSession.isWatchAppInstalled {
            print("starting watch app")

            self.healthStore.startWatchApp(with: self.configuration, completion: { (success, error) in
                // Handle errors
            })
        }

        else{
            print("watch not active or not installed")
        }
    }

}

 func getActiveWCSession(completion: @escaping (WCSession)->Void) {
    guard WCSession.isSupported() else { return }

    let wcSession = WCSession.default()
    wcSession.delegate = self

    if wcSession.activationState == .activated {
        completion(wcSession)
    } else {
        wcSession.activate()
        wcSessionActivationCompletion = completion
    }
}
person pawisoon    schedule 01.06.2017
comment
К сожалению, это не разбудит часы. Как только часы выходят из спящего режима, приложение для часов сразу же становится активным, в этом смысле документация вводит в заблуждение. - person Joe Maher; 23.04.2018