Я тестировал на симуляторе и устройстве, как-то Watch Connectivity перестает работать после того, как он используется один раз.Watch Connectivity работает в первый раз, но не после этого
Я передаю данные от Часы -> iPhone, и он работает только один раз, а затем останавливается после этого.
Любые идеи?
iPhone ViewController
:
var session: WCSession?
override func viewDidLoad() {
super.viewDidLoad()
if WCSession.isSupported() {
session = WCSession.default()
session?.delegate = self
session?.activate()
}
}
func session(_ session: WCSession, didReceiveApplicationContext applicationContext: [String : Any]) {
// Received Application Context from Watch
let type = applicationContext["watchType"]
print("Type iPhone: \(type)")
DispatchQueue.main.async {
self.type.text = "Type: \(type)"
}
}
Часы InterfaceController
:
let session = WCSession.default()
override func awake(withContext context: Any?) {
super.awake(withContext: context)
if WCSession.isSupported() {
session.delegate = self
session.activate()
}
}
@IBAction func startPressed() {
saveEverything()
}
func saveEverything() {
let watchContextType = ["watchType" : "Boxing/Running"]
do {
print("Type Watch: \(watchContextType)")
try session.updateApplicationContext(watchContextType)
} catch {
print("Didn't work")
}
}
Но, в вашем приложении, вы просто отправляете изменения в строке в приложение для iPhone. Обратите внимание, что когда состояние «Запуск», скажем, ползунок равен 1, и при нажатии «+» приложение iPhone не получает никаких изменений? Он получает изменения только при переходе из режима Running> Sleeping или наоборот. И это не то, о чем попросил ОП. Он уже реализовал это :) –
Да, вы правы, что OP реализуют для переноса данных с часов на iPhone, но проблема, с которой он столкнулся, состояла в том, чтобы сохранить данные на стороне iPhone, когда снова и снова запускаются одни и те же данные:) – Shrawan