iOS作业队列类似于Path的android优先级作业队列

时间:2014-07-09 17:53:06

标签: ios objective-c ios7 job-queue

有没有人有类似于Path's Android Priority Job Queue的iOS作业队列,他们不介意与社区分享?我是iOS的新手,所以我不确定平台本身是否提供了这样的解决方案。在Android上没有这样的东西存在所以我不得不使用Path慷慨提供的库。如果iOS本身或Xcode有这样的解决方案/ API请指点我。如果不是,请分享你的,如果你不介意。感谢。

基本上我正在寻找一个允许用户将数据发送到服务器的作业队列,即使没有网络也是如此:这意味着即使用户应该关闭iPhone,队列也会保留数据。然后在稍后的某个时间,当系统检测到网络时,将数据推送到服务器。

关于SO已经存在类似的问题,因此我将其包含在内以获取更多详细信息:How to queue up data for server dispatch on android。不同的是,我的问题是iOS,他们的问题是Android。

用例

我的情况是想象用户正在地铁(没有网络)登上火车,但决定发送电子邮件。然后关闭应用程序,甚至关闭手机。然后一小时后,当用户重新打开手机后,当检测到网络时,应用程序会发送电子邮件。

3 个答案:

答案 0 :(得分:2)

https://github.com/thisandagain/queue非常有前途。它具有重试和持久性的能力。

答案 1 :(得分:1)

可以修改

AFNetworking的请求操作和请求操作管理器,但不需要太多工作。

需要修改:

  • AFHTTPRequestOperation由于没有连接而失败时,请复制该操作并将其存储(例如,在NSArray中)
  • 使用内置的可访问性管理器,并在可达性返回时重试数组中的操作
  • 如果成功
  • ,则从阵列中删除操作

请注意,复制操作时不会复制完成块。来自文档:

  
      
  • -copy-copyWithZone:返回原始NSURLRequest的新操作。因此,复制机制不是在该特定时刻执行操作的精确副本,而是返回一个全新的实例,这对重试操作非常有用。
  •   
  • 操作的副本不包含原始文件的outputStream
  •   
  • 操作副本不包括completionBlock,因为它通常会强烈捕获对self的引用,否则会在复制时指向原始操作的非直观副作用。
  •   

我不知道任何已经实施过这些修改的开源库,或者我已经指出了那些。

答案 2 :(得分:0)

我发现非常类似lib的路径,例如path的作业优先级队列

https://github.com/lucas34/SwiftQueue/wiki

希望这对某人有帮助,因为这是一个非常老的问题,但是它可能会帮助仍然像我这样的人:)