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

问题描述 投票:5回答:3

[有人有不愿意与社区共享的iOS工作队列类似于Path's Android Priority Job Queue吗?我是iOS的新手,因此不确定平台本身是否提供这种解决方案。在android上不存在这样的东西,因此我不得不使用Path慷慨提供的库。如果iOS本身或Xcode具有这样的解决方案/ API,请指向我。如果您不介意,请与他人分享。谢谢。

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

关于SO已经有一个类似的问题,所以我将其包括在内以获取更多详细信息:How to queue up data for server dispatch on android。区别在于我的问题是针对iOS的,而他们的问题是针对android的。

用例

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

ios objective-c ios7 job-queue
3个回答
2
投票

https://github.com/thisandagain/queue很有前途。它具有重试的能力并且是持久的。


1
投票

AFNetworking的请求操作和请求操作管理器可以进行修改,而无需太多工作。

需要修改:

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

注意,复制操作时不会复制完成块。从文档中:

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

我不知道已经实现了这些修改的任何开放源代码库,或者我将您指向那里。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.