2012-07-05 77 views
2

我们已经为Android(和iOS)编写了一个应用程序,它允许用户将照片上传到我们的REST服务器。我们遇到的问题是,有时候用户处于可靠的蜂窝信号并且没有WIFI的地方。所以,我想知道是否有预先构建的解决方案,或者推荐使用推荐路径来推迟这些上传,直到后来只有可用的网络选项不佳。Android(或iOS) - 图像上传队列

现在在Android上我正在使用AsyncTask上传捕获图像的流表示形式。图像的最大尺寸裁剪为1280,另一方面是比例缩放,因此图像不是很大。

用户可能没有信号长达2小时我想象,所以它不需要尝试每分钟上传。此外,可能会有多个上传,所以我认为需要某种类型的队列。

我不是很积极的iOS应用程序正在利用,但我可以找出它是否有帮助。

回答

6

最好的选择是将照片保存到SD卡并将其路径放到数据库中。这里的数据库就像一个队列。所以只要用户访问互联网,应用程序就可以检查数据库中是否有条目并开始上传。一旦你上传照片,你从数据库中删除该记录。

现在,就上传而言,我建议在服务中使用它,而不是AsyncTask。这样,您可以使用AlarmManager定期调用服务,并检查是否有要上传的内容。

我在我的一个应用程序中使用了这种方法,但是用于文档。它像一个魅力。希望有所帮助。

2

在iOS中我使用ASIHTTPRequest,但目前您可以找到其他解决方案(MKNetworkKit)。我做了一个完全像你在做什么的应用程序,所以我做的是:

  1. 检查是否有互联网,如果是的话继续,否则停止。
  2. 尝试发送一张照片,如果成功转到下一张照片,请将照片放在队列中并转到下一张照片。
  3. 重复过程。

让我们想象一下,用户在队列中放了20张照片,然后开始这个过程,在一天结束时他可以再次检查什么是成功的,哪些没有。当然,他可以重新发送失败的东西。