微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何确保在应用程序结束时更新数据?

如何解决如何确保在应用程序结束时更新数据?

目前我正在更新用户使用应用程序时的数据。这对数据库进行了大量调用。 我认为我可以通过在用户离开应用程序时只执行一次更新来提高性能。 问题如下: 如果这些最后写入失败,我该怎么办? 我知道有一个完成块,但我看不到如何重新启动其中的写入。 这就是为什么现在我在应用程序运行时更新数据,即使它更昂贵。 当用户重新登录时,如何确保数据得到更新?

感谢您的时间:)

解决方法

假设您用来更新用户数据的 swift 函数名为 update_data()。我看到您正在使用 Firebase RealTimeDatabase,因此您可能需要完成一段代码。在该完成块中,您可以添加 error in,然后您可以控制在写入数据时发生错误时发生的情况,并调用 update_data() 直到不再出现错误。如果没有连接,或者如果错误将永远持续下去,这对于设备来说可能会非常昂贵。

但是,代码应该是这样的:

func update_data(){
    Database.reference("path").setValue("Data you want to update",withCompletionBlock: {(error,reference) in
        if error != nil{
            //There was an error,try again
            update_data()
        }
    })
}

这似乎不是一个好的做法,因为如果总是出现错误,代码可能会永远运行。但是,您可以在 Firebase 中检查错误类型并独立处理它们。但是,我注意到 FB RealTimeDatabase 会保留请求,直到设备再次连接(如果错误是网络连接),只要用户没有完全关闭应用程序(在这种情况下,我认为没有您的问题的解决方案,因为当您完全关闭应用程序时,所有后台任务都会停止,如果写入失败,您将无法在应用程序未运行的情况下运行应用程序代码)。

最后一段是我个人的经历。不知道有没有其他功能可以解决这个问题。但是,我希望它有帮助:)。请检查您在不同情况下的实施情况(没有连接的用户、低连接的用户、限制访问您的数据库的用户等)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。