Sử dụng Firebase storage trong app ios
Bài đăng này đã không được cập nhật trong 6 năm
1. Thiết lập môi trường
- Xcode 9.0 or later
- iOS 8 or above
- Swift 3.0 or later
- CocoaPods 1.4.0 or later
2. Tạo project trên Fibase Console
Click Add project
Tạo project name, quốc gia ...
Sau khi tạo xong giao diện console sẽ được hiển thị, bạn chọn tab Storage phía bên trái Thay đổi Security rules :
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
}
}
}
Giờ chúng ta đã có nơi để upload cũng như download file trên firebase
3. Thiết lập phía client
Thêm vào podFile:
pod 'Firebase/Core'
pod 'Firebase/Storage'
Set up Cloud Storage: trong AppDelegate:
import Firebase
// func application:didFinishLaunchingWithOptions:
FirebaseApp.configure()
Tạo reference
let storage = Storage.storage()
let storageRef = storage.reference()
4. Upload file to Firebase
Firebase cung cấp 2 cách để upload:
Upload from data in memory
Upload from a URL representing a file on device
Cách 1: Upload from data in memory
let data = Data()
let testRef = storageRef.child("PathToFile")
let uploadTask = testRef.putData(data, metadata: nil) { (metadata, error) in
guard let metadata = metadata else {
// TODO
return
}
let size = metadata.size
storageRef.downloadURL { (url, error) in
guard let downloadURL = url else {
// TODO
return
}
}
}
Cách 2:
let localFile = URL(string: "pathToFile")!
let testRef = storageRef.child("pathToFile")
let uploadTask = testRef.putFile(from: localFile, metadata: nil) { metadata, error in
guard let metadata = metadata else {
// TODO
return
}
let size = metadata.size
storageRef.downloadURL { (url, error) in
guard let downloadURL = url else {
// TODO
return
}
}
}
Add file MetaData
let testRef = storageRef.child("pathToFile")
// Create file metadata including the content type
let metadata = StorageMetadata()
metadata.contentType = "typeOfFile"
// Upload data and metadata
testRef.putData(data, metadata: metadata)
// Upload file and metadata
testRef.putFile(from: localFile, metadata: metadata)
Quản lý việc upload:
// Start uploading a file
let uploadTask = storageRef.putFile(from: localFile)
// Pause the upload
uploadTask.pause()
// Resume the upload
uploadTask.resume()
// Cancel the upload
uploadTask.cancel()
5. Download file from firebase
Firebase cũng cung cấp cho chúng ta 3 cách để thực hiện download
Download to NSData in memory
Download to an NSURL representing a file on device
Generate an NSURL representing the file online
Cách1 :
let testRef = storageRef.child("pathToFile")
// Download in memory with a maximum allowed size of 1MB (1 * 1024 * 1024 bytes)
testRef.getData(maxSize: 1 * 1024 * 1024) { data, error in
if let error = error {
// TODO
} else {
// TODO
let image = UIImage(data: data!)
}
}
Cách 2:
// Create a reference to the file you want to download
let testRef = storageRef.child("pathToFile")
// Create local filesystem URL
let localURL = URL(string: "path/to/image")!
// Download to the local filesystem
let downloadTask = testRef.write(toFile: localURL) { url, error in
if let error = error {
// TODO
} else {
// Local file URL for "path/to/image" is returned
}
}
Cách 3:
let testRef = storageRef.child("path/to/image")
// Fetch the download URL
testRef.downloadURL { url, error in
if let error = error {
// TODO
} else {
// Get the download URL for 'path/to/image'
}
}
Quản lý tiến trình download:
// Start downloading a file
let downloadTask = storageRef.child("pathToFile").write(toFile: localFile)
// Pause the download
downloadTask.pause()
// Resume the download
downloadTask.resume()
// Cancel the download
downloadTask.cancel()
6: Kết quả
Chúng ta đã có thể uplaod và download firebase 1 cách đơn giản và nhanh chóng.
Ngoài ra firebase cũng cung cấp cho chúng ta rất nhiều chức năng thú vị như RealTimeDatabase, Hosting, MLKit, Tracking ...
Hi vọng với firebase chúng ta sẽ có thể tạo được những ứng dụng thú vị và áp dụng được nhiều hơn vào thực tế.
All rights reserved