WatchConnectivity - передача файлов не работает - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь создать простое приложение, которое передает файл из AppleWatch в iPhone, к которому он подключен, но по какой-то причине он не работает.

Прежде всего, в часах (InterfaceController) У меня есть метод, названный «sendFile», который, когда пользователь нажимает кнопку, вызывается метод для отправки файла. Метод выглядит следующим образом:

   @IBAction func sendFile() {
        DispatchQueue.global(qos: .background).async {//We dispatch everything in a thread
        if wcSession.isReachable && wcSession.activationState == .activated && wcSession.isCompanionAppInstalled && WCSession.isSupported(){ //If everything is correct, we send the file
        if let filePath = Bundle.main.url(forResource: "test", withExtension: "jpg") {//We get the test image to send
           fileIsBeingTransfered = wcSession.transferFile(filePath, metadata: nil)//We send the file
        }else{
                print("ERROR SENDING THE FILE")
        }
      })
   }

Конечно, здесь сообщение об ошибке никогда не появляется, поэтому я предполагаю, что телефон и часы подключены и файл успешно прочитан.

Также, как Вы можете видеть там, есть переменная, названная "fileIsBeingTransfered", которая отслеживает статус перехода. В этом случае у меня есть это с didSet, таким образом я могу отследить, когда передача файла заканчивается. Как видно из приведенного ниже кода, всякий раз, когда передача все еще выполняется, появляется текст, который указывает, что файл передается, и всякий раз, когда он заканчивается, он возвращается к тексту по умолчанию.

var fileIsBeingTransfered:WCSessionFileTransfer!{
    didSet {
        if(fileIsBeingTransfered.isTransferring){
            textDescription.setText("Please wait until file is being stored")
        }else{
            textDescription.setText("Press the button to send a file")
        }
    }
}
* 1010 Наконец, внутри контроллера представления (в Iphone) у меня есть метод, который проверяет полученные файлы, и он выглядит так:
  func session(_ session: WCSession, didReceive file: WCSessionFile) {
    print("File received") }

Но проблема в том, что это сообщение никогда не появляется , а текст часов застрял с текстом «отправка файла», поэтому я предполагаю, что уведомление отправляется или принимается.

Кроме того, я хотел бы добавить, что я пытался отправить текст между обе платформы, и текст отправляется и получен успешно в обе стороны.

Так есть ли идеи, почему не работает? Заранее спасибо.

...