gpt4 book ai didi

swift - Firebase 离线支持 : upload posts while user is offline and sync when user comes online in iOS Swift app

转载 作者:搜寻专家 更新时间:2023-10-31 08:07:29 24 4
gpt4 key购买 nike

我在一个 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)
})
}
)

我想知道我应该对我的代码进行哪些更改才能提供离线功能。任何代码片段都会有更多帮助。

最佳答案

这个问题最好看成是出现错误时重新发送到服务器。对于您的离线情况,您可以检查返回的错误是否是网络错误,或者手动检查网络连接可用性。

您可以创建一个重新发送的对象数组例如

var resendList : [YourObjectType]

// when failed to send to server
resendList.append(yourFailedObject)

然后,2 个解决方案:

  1. 手动检查网络连接并在应用程序在 appDelegate 的 func applicationDidBecomeActive(_ application: UIApplication) 中激活时重新上传。要检查连接性,您可以尝试此处的方法:Check for internet connection with Swift但这有一个问题,即用户必须退出应用程序并再次连接网络

  2. 使用 https://stackoverflow.com/a/27310748/4919289 的建议方法跟踪(收听通知)连接变化并重新上传到服务器

并循环遍历resendList中的所有对象并重新上传。

关于swift - Firebase 离线支持 : upload posts while user is offline and sync when user comes online in iOS Swift app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52697027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com