WatchConnectivity - използване на sendMessage

Опитвам се да установя връзка между Apple Watch (версия 2.0.1) и моя iPhone (с iOS 9.1) с WatchConnectivity API в Swift.

Проследих този урок и не можа да постигне обмен на съобщения между устройствата.

Съобщения от Apple Watch:

    let applicationData = ["data":sampleData]

    self.wcSession.sendMessage(applicationData, replyHandler: {(_: [String : AnyObject]) -> Void in
        // handle reply from iPhone app here
        }, errorHandler: {(error ) -> Void in
            // catch any errors here
    })

В моя ViewController.swift:

// MARK: - WatchConnectivity Session
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {

    let sample:HKQuantitySample = (message["data"] as? HKQuantitySample)!
    print("Sample messaged: \(sample)")
}

func sessionReachabilityDidChange(session: WCSession) {
    print("session reachability changed: \(session.reachable)")
}

Както приложението Watch, така и приложението за iOS са на преден план!! Не съм сигурен какво липсва.


person Mj.B    schedule 02.12.2015    source източник
comment
Какво съдържа sampleData? Манипулаторът на грешки извиква ли се с грешка, ако да, каква грешка?   -  person ccjensen    schedule 03.12.2015
comment
примерните данни съдържат HK примери от данни за сърдечната честота. Не получавам никакви грешки. Освен това didReceiveMessage също не се извиква.   -  person Mj.B    schedule 03.12.2015


Отговори (1)


Всички API на WCSession, които приемат речник като параметър, приемат само речници от типове списъци със свойства; това включва sendMessage API, който използвате:

съобщение / Речник на стойностите на списък със свойства, които искате да изпратите. Вие определяте съдържанието на речника, който вашият аналог поддържа. Този параметър не трябва да е нула.

Така че HKSamples не са тип списък със свойства поради което това не работи, въпреки че казвате, че манипулаторът на грешки не се извиква, което звучи много подозрително. Сигурни ли сте, че промяната на вашия код на това не регистрира нищо?

self.wcSession.sendMessage(applicationData, replyHandler: {(_: [String : AnyObject]) -> Void in
    // handle reply from iPhone app here
    }, errorHandler: {(error ) -> Void in
        print(error);
})
person ccjensen    schedule 03.12.2015