[有人有不愿意与社区共享的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的。
用例
我的情况是,假设用户正在地铁上(没有网络)登上火车,但决定发送电子邮件。然后关闭应用程序,甚至关闭手机。然后,一个小时后,在用户重新打开电话后,当检测到网络时,该应用会发送电子邮件。
https://github.com/thisandagain/queue很有前途。它具有重试的能力并且是持久的。
AFNetworking的请求操作和请求操作管理器可以进行修改,而无需太多工作。
需要修改:
AFHTTPRequestOperation
由于没有连接而失败时,请复制该操作并将其存储(例如,存储在NSArray
中]注意,复制操作时不会复制完成块。从文档中:
-copy
和-copyWithZone:
返回带有原始NSURLRequest
的新操作。因此,复制机制将返回一个全新的实例,而不是在该特定时刻精确复制操作,这对于重试操作很有用。- 操作副本将不包括原件的
outputStream
。>>- 操作副本不包含
completionBlock
,因为它通常会强烈捕获对self
的引用,否则该引用将具有在复制时指向原始操作的不直观的副作用。我不知道已经实现了这些修改的任何开放源代码库,或者我将您指向那里。
我发现非常类似lib的路径,例如path的作业优先级队列