Как отслеживать прогресс загрузки на нескольких устройствах с помощью Firebase

#ios #swift #firebase #file-upload

#iOS #swift #firebase #загрузка файла

Вопрос:

Я использовал тип Firebase StorageUploadTask для отслеживания хода загрузки в хранилище. Однако мне было интересно, каким наилучшим способом было бы отслеживать ход загрузки с нескольких устройств, скажем, например, если я загружаю что-то со своего ноутбука в Firebase и хочу иметь возможность видеть ход загрузки со своего телефона. Есть ли способ передать StorageUploadTask через Firebase или загрузить StorageUploadTask по URL или id? Спасибо!

В идеале я мог бы сделать что-то вроде:

Из настольного приложения:

 let uploadTask = storageRef.putFile(from: path)
  

Из мобильного приложения
(связано с одной и той же базой данных Firebase)

 let uploadTask = Firebase.getUploadTask(fromRef: storageRef)
uploadTask.observe(.progress) { ... }
  

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

1. Я не совсем понимаю, чего вы пытаетесь достичь.

2. Я хотел бы знать, есть ли способ передать StorageUploadTask через Firebase, чтобы я мог отслеживать ход загрузки с нескольких устройств. @DougStevenson

3. Я не уверен, что вы подразумеваете под «переходом на Firebase». Я думаю, было бы полезно, если бы вы отредактировали вопрос, чтобы более подробно объяснить, в чем заключается ваш конкретный случай, и что ваша реализация должна сделать в конце дня.

4. Я добавил пример того, как может выглядеть функция, которую я ищу. Мне просто любопытно, существует ли что-то похожее на эту функциональность. @DougStevenson

5. Если вы спрашиваете, могут ли несколько устройств отслеживать ход выполнения загрузки? Конечно. Но почему? И код в вопросе не будет работать для этого варианта использования (на других устройствах), локальному устройству необходимо будет отслеживать прогресс и записывать данные на узел Firebase по мере выполнения задачи. Другим устройствам потребуется наблюдатель на этом узле, чтобы они получали события.

Ответ №1:

Невозможно просто «пропустить» задачу загрузки для совместного использования между клиентами. Лучше всего иметь локального слушателя для каждой задачи с кодом для обновления некоторого общего местоположения (возможно, узла базы данных в реальном времени или документа Firestore) с ходом каждой передачи. Затем обновления могут прослушиваться каждым клиентом, который знает местоположение обновлений.

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

1. Хорошо, спасибо, Даг. Это то, что, как я понял, будет ответом на этот вопрос; спасибо за помощь!