Firebase Storage: использование URL загрузки вместо хранилища - PullRequest
1 голос
/ 18 октября 2019

У меня есть приложение iOS, которое использует Firebase Storage для хранения изображений. После загрузки изображения я сохраняю storage reference в моем Firebase Database. Когда приложение загружается, оно выбирает различные storage references из базы данных и использует метод FirebaseUI для отображения соответствующих изображений, например, так:

let storageRef = Storage.storage().reference(forURL: imageUrl)
imageView.sd_setImage(with: storageRef, placeholderImage: nil)

Это прекрасно работает ... но очень медленно.

В поисках решений для ускорения Firebase Storage Я нашел этот пост, который намекает на использование общедоступной ссылки изображения, т.е. его download url вместо storage reference: https://stackoverflow.com/a/44362350/5225013

Насколько я понимаю, это связано с тем, что public urls имеет CDN перед ними, тогда как storage references don 'т.

download url можно получить в приложении с помощью следующего кода:

let storageRef = Storage.storage().reference(forURL: imageUrl)
storageRef.downloadURL { (downloadUrl, error) in

    if let downloadUrl = downloadUrl {
        // do something with downloadUrl
    }
}

Однако получение этого способа довольно бесполезно для моей цели, поскольку выполнение асинхронного вызоватикает на дополнительное время до того, как изображение может быть отображено ...

Я играю над идеей написать облачную функцию для сохранения download url каждого изображения вместе с соответствующими storage reference в базе данных, изатем использовать это для отображения изображений в приложении. Изображения не являются личными и не содержат конфиденциального контента, поэтому я не против, если они являются публичными. Мне в основном интересно;Есть ли что-то, о чем мне следует беспокоиться, если я сделаю это? Это необычная практика по причине?

1 Ответ

2 голосов
/ 18 октября 2019

Вам не нужно ничего "делать".

Для общедоступных файлов в хранилище Google URL-адрес для их получения:

https://firebasestorage.googleapis.com/v0/b/{project id} .appspot.com / o / {путь к хранилищу}? alt = media

В своих приложениях я сохраняю путь к хранилищу, а затем создаю общедоступный URL-адрес для загрузки, используя простую конкатенацию.

Работает какочарование.

...