0

我想创建一个简单的应用程序,用户可以在其中拍照。关键是我需要保证照片尽快上传到我们的服务器。这一定是真的,即使照片是在没有互联网连接的情况下拍摄的,或者即使电池在上传过程中耗尽,或者您能想到的任何其他情况。

解决这个问题的最简单方法是使用进度条,但我真的不希望我的用户不必要地等待。

下次启动应用程序时上传照片还不够好,因为我需要尽快获得照片。

我的问题是,是否可以保证照片在后台上传?

这个问题有点相似,但我没有任何东西可以使用该位置,所以该应用程序可能会被我的 App Store 拒绝。

4

1 回答 1

3

简而言之:您无法保证任何事情。您只能尝试并希望它被上传,您可以做一些事情来最大化您的机会,但如果长时间没有连接,鉴于您提到的限制,您无能为力。

您只能在应用程序处于前台时执行上传。

除非你有背景类型——正如你猜想的那样,如果你假装有位置,或者其他类型之一,而你没有,那么你将被拒绝。

因此,您唯一可用的其他选择是使用 beginBackgroundTaskWithExpirationHandler。

一旦用户离开您的应用程序,这将给您大约 10 分钟的时间在后台执行(但如果他们终止应用程序,您将无能为力)。

如果在应用程序处于前台时没有连接 + 移动到后台后的额外 10 分钟,除了下次应用程序启动时重试之外,您无能为力。

使用 Reachability 类查看 url 是否可访问,如果是,请尝试上传,如果未注册可访问状态更改的通知,并且一旦出现可访问性,请尝试再次上传。

如果您有可达性,请尝试上传它,如果出现网络故障,请继续重试,直到 10 分钟结束。

PS 你怎么能指望在电池耗尽时保证它会被上传?

于 2012-06-14T23:25:29.453 回答