Контроллер интерфейса приложения просмотра:
@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», приложение будет работать нормально.Я могу вручную запустить приложение для часов, но ни для консоли, ни для точек останова.