gpt4 book ai didi

ios - 将数据发送到服务器/在后台重试请求的选项

转载 作者:行者123 更新时间:2023-11-29 12:14:06 25 4
gpt4 key购买 nike

我们正在开发一个企业应用程序,它将用户输入的表单数据发送到服务器。该应用程序会在用户点击保存后立即尝试发送数据。如果发送数据出现问题(例如无网络连接),我们希望在 X 分钟后重试,并定期重试,直到数据发送成功。请求通常不是很大或运行时间不是很长,但用户经常处于无法访问网络的环境中,因此重试很重要。

在应用程序运行时重试 API 请求非常简单,但理想情况下,我们希望在应用程序处于后台时定期重试。我们可以通过 iOS 后台执行功能实现的最佳效果是什么?以下是我看到的一些选项:

  • 使用 beginBackgroundTaskWithExpirationHandler: 一次性请求额外的时间。这基本上会让我们在应用程序进入后台后再次尝试发送数据,但不会重复尝试
  • 使用“后台获取”功能,并在应用程序被唤醒进行后台获取时尝试将任何新数据发送到服务器。理论上听起来不错,但我担心这可能是对后台抓取功能的滥用?

这些是我最好的选择之一吗?我还缺少另一种方法吗?

这是一个具有 iOS 和 Android 实现的 Xamarin 应用程序,但我认为这对我的问题没有重大影响;我可以根据需要编写特定于 iOS 的代码。

最佳答案

我认为您错过了一种方法:background NSURLSessions .我认为这是您应该使用的。

我真的不知道你能用这个拍多少张照片。这是我的建议:

  • 当您开始后台下载时,也开始后台任务(使用 beginBackgroundTaskWithExpirationHandler:)。
  • 只要您的后台任务没有过期,您就可以重新开始下载,即使在后台也是如此。
  • 如果您的后台任务到期处理程序被调用,您需要立即结束后台任务。此时您的应用程序将停止执行,您的下载将在外部进程中继续。
  • 当下载完成或失败时,您的应用程序将在后台重新启动并有机会处理结果。我不知道的是,此时您是否能够开始新的后台下载。你应该尝试或等待比我更了解的人......

还要确保检查 -(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes; 中的委托(delegate)方法为了在失败的地方重新开始下载而不是重新开始。

关于ios - 将数据发送到服务器/在后台重试请求的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32406078/

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