因此,我遇到了一个问题,即当用户进行更新时,我的Firebase应用不会更新用户值。更清楚:假设用户1有一张狗的照片,然后将其改为猫。
一旦他们将其更改为cat,我的Firebase中的节点值就会成功更新,但是用户自己将无法看到应用程序中其他以前加载的区域(带有狗图片的其他位置)的更改,直到他们注销然后重新登录。
出于这个原因,我想知道是否有任何方式进行后台应用程序刷新,以便应用程序中所有以前的狗值都更改为cat值,而无需用户注销然后重新登录。请注意同样的问题不仅出现在我的用户的个人资料图片中,还出现在我设置的任何其他用户字段中。
以下是我在Firebase中为用户更新节点值的方法:
let storageRef = FIRStorage.storage().reference()
_ = FIRStorageMetadata()
let filePath = "\(FIRAuth.auth()?.currentUser?.uid)/\("userPhoto")"
let profileImageData = UIImageJPEGRepresentation(self.profilePicture.image!, 1.0)
if let data = profileImageData {
storageRef.child(filePath).put(data, metadata: nil){(metaData,error) in
if let error = error {
print(error.localizedDescription)
return
} else {
let downloadURL = metaData!.downloadURL()!.absoluteString
let userPhotoUpdateRef = FIRDatabase.database().reference().child("users").child(self.currentUser).child("userPhoto")
userPhotoUpdateRef.setValue(downloadURL)
}
}
}
如果您有任何疑问,请询问!任何帮助将不胜感激!
答案 0 :(得分:0)
Firebase SDK for Cloud Storage提供了一种从云存储读取文件和将文件写入云存储的简便方法。它没有提供监视这些文件的方法。
提供监控方法的最简单方法是将文件的元数据写入Firebase实时数据库。请参阅存储文档中的这个简短部分,以简要提及:https://firebase.google.com/docs/storage/ios/file-metadata#custom_metadata
当您将数据写入Firebase数据库中的某个位置时,actively monitoring that location的所有应用都会立即更新。获得该更新后,您可以从Cloud Storage for Firebase重新加载映像。