Я создал простой класс Swift:
import Foundation
import WatchConnectivity
class WatchCommunication : NSObject, WCSessionDelegate {
var session: WCSession!
override init() {
super.init()
if WCSession.isSupported() {
print("WCSession is supported")
self.session = WCSession.default
self.session.delegate = self
if session.activationState == WCSessionActivationState.activated {
print("activationState is activated")
} else {
print("activationState is not activated")
self.session.activate()
}
} else {
print("WCSession is not supported")
}
}
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
print("activationState", activationState.rawValue)
print(error)
}
}
В моем расширении приложения для часов я загружаю создание экземпляра этого класса
class ExtensionDelegate: NSObject, WKExtensionDelegate {
let watchCommunication: WatchCommunication = WatchCommunication()
// ...
Когда я тестирую этот код вна симуляторе я вижу следующие записи
WCSession is supported
activationState is not activated
activationState 2
nil
Все работает нормально.Когда я запускаю одно и то же приложение на своем тестируемом iPhone X и в паре с Apple Watch 3, журналы показывают
WCSession is supported
activationState is not activated
Так что кажется, что метод
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
никогда не вызывается на моем AppleСмотрите.
Такие методы, как
func session(_ session: WCSession, didReceiveApplicationContext applicationContext: [String : Any]) {
, также не вызываются на устройстве (но работают на симуляторе).
На стороне iPhone X вызывается метод actionDidCompleteWith
, с activationState
2 (activated
) и updateApplicationContext
не выдает ошибку.
Естьоднако связь между iPhone и Apple Watch, потому что метод https://developer.apple.com/documentation/healthkit/hkhealthstore/1648358-startwatchapp действительно запускает тренировку на часах (и все приложения для часов Apple и сторонних производителей работают нормально).