didReceiveMessage получает и отвечает на сообщение, но метод не вызван - PullRequest
0 голосов
/ 26 мая 2018

Контроллер интерфейса приложения просмотра:

@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") никогда не показывается на консолисвязанные, но я чувствую, что это может быть, и я должен упомянуть об этом.
    чтобы запустить мое приложение для часов, я выбираю «WatchKit App» и нажимаю кнопку воспроизведения (именно в этом режиме выводит консоль).однако в течение этого времени мое приложение присутствует только в эмуляторе часов.Если я пытаюсь открыть его на симуляторе iPhone, он показывает индикатор активности, затем гаснет и возвращается на домашний экран.Если я выберу только «» и нажму «Play», приложение будет работать нормально.Я могу вручную запустить приложение для часов, но ни для консоли, ни для точек останова.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...