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, он показывает индикатор активности, затем гаснет и возвращается на домашний экран. Если я выберу просто "" и нажму "играть", приложение будет работать нормально. Я могу вручную запустить приложение для часов, но ничего ни для консоли, ни для каких-либо точек останова.

0 ответов

Другие вопросы по тегам