Я пишу относительно простое приложение для синхронизации c "в реальном времени" UIImage на iPhone (аналогичном приложению для рисования) с watchImage на часах. Довольно простой случай. Я использую WatchConnectivity и простую передачу сообщений между телефоном и часами, и я могу отправить свое изображение с iPhone на часы.
На телефоне я использую простой
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
...
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
...
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
...
sendDataToWatch(image: picture.image!)
}
func sendDataToWatch(image: UIImage) {
if WCSession.isSupported() {
let session = WCSession.default
if session.isReachable {
let message = ["imageData":image.jpegData(compressionQuality: 0.1)]
session.sendMessage(message as [String : Any], replyHandler: nil, errorHandler: { (error:Error) in print("ERROR: \(error.localizedDescription)") })
} else {
// watch is not reachable
}
}
}
На часах:
func processMessage(_ message: [String : Any]) {
if let imageData = message["imageData"] as? Data {
let image = UIImage(data: imageData)
self.watchImage.setImage(image)
}
}
Все работает, как и ожидалось: пока приложение для часов "активно", я получаю свой рисунок в реальном времени на часах.
Моя проблема в том, что часы «бездействуют», например, при движении запястья, опуская мою руку. Экран часов становится черным, и приложение переходит в фоновый режим «Frontapp», согласно документации https://developer.apple.com/documentation/watchkit/working_with_the_watchos_app_life_cycle
Если я рисую на экране iPhone, когда часы находятся в режиме ожидания "Я не получаю ни одной фотографии. У меня есть 2 вопроса: - есть ли уведомление или обратный вызов, который запускается, когда приложение для часов возвращается в нормальное состояние (видимое), поднимая мое запястье? В этом случае я могу попросить телефон отправить мне «обновленную» картинку. Если нет, то как лучше всего синхронизировать содержимое телефона и часов?
Спасибо за помощь!