我想创建一个简单的应用程序,用户可以在其中拍照。关键是我需要保证照片尽快上传到我们的服务器。这一定是真的,即使照片是在没有互联网连接的情况下拍摄的,或者即使电池在上传过程中没电了,或者您能想到的任何其他情况。
解决这个问题的最简单方法是使用进度条,但我真的不希望我的用户不必要地等待。
下次启动应用程序时上传照片还不够好,因为我需要尽快上传照片。
我的问题是,是否可以保证后台上传照片?
This问题有点相似,但我没有任何可以使用该位置的东西,因此该应用程序可能会在我的 App Store 中被拒绝。
最佳答案
简而言之:您无法保证任何事情。你只能尝试并希望它被上传,你可以做一些事情来最大化你的机会,但如果长时间没有连接,那么考虑到你提到的限制,你无能为力。
您只能在应用程序处于前台时执行上传。
除非你有背景类型——正如你猜到的那样,如果你假装有位置,或者其他类型之一,而你没有,那么你会被拒绝。
因此,您唯一可用的其他选项是使用 beginBackgroundTaskWithExpirationHandler。
一旦用户离开您的应用程序,您将有大约 10 分钟的时间在后台执行(但如果他们终止应用程序,您将无能为力)。
如果应用程序在前台时没有连接 + 移动到后台后的额外 10 分钟,除了下次应用程序启动时重试之外,您无能为力。
使用 Reachability 类查看 url 是否存在可达性,如果存在则尝试上传它,如果不存在则注册可达性状态更改的通知,一旦出现可达性就尝试再次上传。
如果您可以访问,请尝试上传它,如果出现网络故障,请继续重试,直到 10 分钟结束。
附言 您怎么可能期望在电池电量耗尽时保证它能够上传?
关于iphone - 能保证一张照片在后台上传吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11042409/