5

是否有人拥有类似于Path 的 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 的。

用例

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

4

3 回答 3

2

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

于 2015-06-24T22:42:31.613 回答
1

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

需要修改:

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

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

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

我不知道有任何开源库已经实现了这些修改,或者我会指出你那里。

于 2014-07-09T18:48:28.683 回答
0

我发现了非常相似的库,比如路径的作业优先级队列

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

希望这对某人有所帮助,因为这是非常古老的问题,但可能会帮助仍在寻找像我这样的人:)

于 2020-04-14T17:27:49.523 回答