私がやりたいことは、アプリを開くたびに、または新しいデータがサーバーから変更されたときに、ローカルに保存されたデータを更新する必要があることです。Firebase Storageのアップデートを確認し、古いコンテンツを置き換えますか?
私はデータが携帯電話上でローカルにダウンロードされると、私はfirebaseでそれを変更したとき、それは携帯電話に変更されませんここにされて何が起こるかoverride func viewDidLoad() {
super.viewDidLoad()
if book?.bookPath != book?.bookPath {
print("HERE \(book?.bookPath)")
loadReader(filePaht: (book?.bookPath)!)
} else {
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
let strName = book?.id
let filePath = "\(documentsPath)/"+strName!+".pdf"
let fileManager = FileManager.default
if fileManager.fileExists(atPath: filePath) {
loadReader(filePaht: filePath)
return;
}
let reference = FIRStorage.storage().reference(forURL: (self.book?.bookURL)!)
downloadTask = reference.data(withMaxSize: 50 * 1024 * 1024) { (data, error) -> Void in
if (error != nil) {
} else {
if ((try! data?.write(to: URL.init(fileURLWithPath: filePath, isDirectory: false))) != nil) {
self.db.upDate(id: (self.book?.id)!, bookPath: filePath)
self.loadReader(filePaht: filePath)
}
}
}
downloadTask.observe(.resume) { (snapshot) -> Void in
// Download resumed, also fires when the download starts
}
downloadTask.observe(.pause) { (snapshot) -> Void in
// Download paused
}
downloadTask.observe(.progress) { (snapshot) -> Void in
}
downloadTask.observe(.success) { (snapshot) -> Void in
}
downloadTask.observe(.failure) { (snapshot) -> Void in
}
}
}
}
}
データをローカルにダウンロードして保存するには、このコードを使用している
ダウンロードした後にそれ自体
'.observe(.value'はデータが変更されたときにリッスンされ、データが変更されるたびに呼び出されます。リクエストの完了ハンドラは毎回呼び出されます。 – John
そうですが、データすでにダウンロードされていて、電話でローカルに保存されています。もし私がそれをサーバー上で更新されたものに変更したいのであれば、ピクチャ1がサーバ用にダウンロードされ、私はサーバからピクチャ1を削除し、電話機自体から画像1を削除して画像2に置き換えてください。あるいは、ユーザーにもう一度ダウンロードさせてください。 – Khallad
'FirebaseStorage'を参照する場合、' FirebaseDatabase'を参照する場合は別の方法で動作します。完了ハンドラが呼び出されたデータベース内のデータの値が変更されると、これは 'arrayBooks'が新しいデータ – John