Я пытаюсь создать простое приложение, которое передает файл из 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") }
Но проблема в том, что это сообщение никогда не появляется , а текст часов застрял с текстом «отправка файла», поэтому я предполагаю, что уведомление отправляется или принимается.
Кроме того, я хотел бы добавить, что я пытался отправить текст между обе платформы, и текст отправляется и получен успешно в обе стороны.
Так есть ли идеи, почему не работает? Заранее спасибо.