Utt*_*dey 5 firebase swift firebase-realtime-database google-cloud-functions firebase-storage
我在iOS-Swift项目中使用firebase,我必须启用离线支持上传帖子,在帖子中有一张图片和标题就像Instagram一样,所以我想要的是当用户离线并且他/她想要上传帖子,他/她的照片保存在缓存中,当用户上线时,照片上传并返回我们可用于保存帖子的下载URL - 详细说明数据库.
示例代码是:
let photoIDString = UUID().uuidString
let storageRef = Storage.storage().reference(forURL: "storage ref URL").child("posts").child(photoIDString)
storageRef.putData(imageData, metadata: nil, completion: { (metadata, error) in
guard let metadata = metadata else {
return
}
if error != nil {
return
}
storageRef.downloadURL(completion: { ( url, error ) in
guard let downloadURL = url else {
return
}
let photoUrl = downloadURL.absoluteString
self.sendDataToDatabase(photoUrl: photoUrl)
})
}
)
Run Code Online (Sandbox Code Playgroud)
我想知道我应该在代码中进行哪些更改以提供脱机功能.任何代码段都会有所帮助.
小智 0
问题最好视为出现错误时重新发送到服务器。对于您离线的情况,您可以检查返回的错误是否是网络错误,或者手动检查网络连接可用性。
您可以创建一个重新发送的对象数组,例如
var resendList : [YourObjectType]
// when failed to send to server
resendList.append(yourFailedObject)
Run Code Online (Sandbox Code Playgroud)
然后,2个解决方案:
手动检查网络连接,并在应用程序在 appDelegate 中激活时重新上传func applicationDidBecomeActive(_ application: UIApplication)。要检查连接性,您可以尝试此处的方法:使用 Swift 检查互联网连接但这有一个问题,用户必须退出应用程序并在网络连接的情况下再次返回
使用/sf/answers/1911752391/的建议方法跟踪(收听通知)连接更改并将其重新上传到服务器
并循环遍历resendList中的所有对象并再次重新上传。
| 归档时间: |
|
| 查看次数: |
388 次 |
| 最近记录: |