在用户退出之前,Firebase不会更新整个应用中的值

时间:2017-04-23 15:24:54

标签: ios swift firebase firebase-storage

因此,我遇到了一个问题,即当用户进行更新时,我的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)
                }
            }
        }

如果您有任何疑问,请询问!任何帮助将不胜感激!

1 个答案:

答案 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重新加载映像。