didReceiveMessage получает и отвечает на сообщение, но метод не вызван
Смотреть контроллер интерфейса приложения:
@IBAction func scheduleMeeting(_ sender: WKInterfaceButton) {
if (WCSession.isSupported()) {
session.sendMessage([ "scheduleMeeting": ["scheduleMeeting"] ], replyHandler: { (responses) -> Void in
print("response: \(responses)")
}) { (err) -> Void in
print("error: \(err)")
}
}
}
Контроллер основного вида приложения iOS:
class ParentViewController: UIViewController, WCSessionDelegate {
var session: WCSession?
// WCSession Delegate protocol
func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) {
//FYI i have tried this -DispatchQueue.main.async { - but no difference
print("test1")
do {
//since we are passing true for asynchronous we cannot use the result of the call, the warning below is n/a
try
Communicator.addScheduledMeeting(self.scheduledMeeting, asynchronous: true)
} catch {
print("Unexpected saving scheduled meeting error: \(error).")
}
// Send a reply
replyHandler(["Message":"Hi from app"])
}
//omitted rest of class
Как видно из вывода консоли (ниже), приложение получает сообщение, а ответ отправляется обратно.
ответ: ["Сообщение": Привет из приложения]
моя проблема в том, что ни один другой код там не запускается
- print("test1") никогда не отображается на консоли
- точки останова внутри didReceiveMessage и Communicator.addScheduledMeeting не удаляются
Примечание: я не знаю, связано ли это, но я чувствую, что это может быть, и я должен упомянуть об этом.
чтобы запустить мое приложение для часов, я выбираю " WatchKit App" и нажимаю "play" (именно в этом режиме выводится консоль). однако в это время мое приложение присутствует только в эмуляторе часов. Если я пытаюсь открыть его на симуляторе iPhone, он показывает индикатор активности, затем гаснет и возвращается на домашний экран. Если я выберу просто "" и нажму "играть", приложение будет работать нормально. Я могу вручную запустить приложение для часов, но ничего ни для консоли, ни для каких-либо точек останова.