WatchConnectivity — transerUserInfo отправляет, но не получает данные

#ios #swift #apple-watch #watchconnectivity

#iOS #swift #apple-watch #watchconnectivity

Вопрос:

Я создавал приложение, которое использует WatchConnectivity для переноса простой структуры с Apple Watch на iPhone, и столкнулся с некоторыми проблемами. Отправка проходит отлично, и оба устройства доступны и активированы в одном сеансе, но iPhone, похоже, никогда не получает структуру, которую я ему отправляю.

Вот мой текущий код. Я решил использовать transferUserInfo , чтобы разрешить фоновую передачу данных.

Структура:

 struct myDataList {
    var xAcc: [Int]
    var timestamps: [Int]
}
  

Просмотр (отправка):

 func sendTestData(data:myDataList) {
    print("sending file to iphone")
    if WCSession.default.activationState == WCSessionActivationState.activated amp;amp; WCSession.isSupported() amp;amp; WCSession.default.isReachable {
        WCSession.default.transferUserInfo(["Data" : data])
    }
    else {
        print("Could not send")
    }
}
  

iPhone (Прием):

 func session(_ session: WCSession, didReceiveUserInfo userInfo: [String : Any] = [:]) {
    print("received something")
    DispatchQueue.main.async {
        if let data = userInfo["Data"] as? myDataList {
            for (acc,time) in zip(data.xAcc,data.timestamps){
                let dataLine: String = "(acc),(time)n"
                self.appendToFile(file: "data", data: dataLine)
            }
        }
    }
}
  

На обоих устройствах я начал сеанс следующим образом:

 if WCSession.isSupported() {
    WCSession.default.delegate = self
    WCSession.default.activate()
}
  

Я протестировал другие функции для записи в file / etc, и они работают по отдельности. Я был бы признателен за отзывы и советы о том, как это решить. Приветствия!

Комментарии:

1. Вы проверили userInfo ? Что в нем содержится?

2. Я не могу проверить, userInfo поскольку session функция, похоже, даже не вызывается. Я добавил несколько строк над DispatchQueue закрытием для печати на экране и консоли, и они не печатаются. В идеале userInfo это была бы структура, из которой я пытаюсь извлечь массивы.