![](/img/trans.png)
[英]iOS GCD: Difference between any global queue and the one with background priority (DISPATCH_QUEUE_PRIORITY_BACKGROUND)?
[英]iOS job queue similar to Path's android priority job queue
有沒有人有一個類似於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 的。
用例
我的情況是想象一個用戶正在乘坐地鐵(無網絡)登上火車,但決定發送電子郵件。 然后關閉應用程序,甚至關閉手機。 然后一個小時后,在用戶重新打開手機后,當檢測到網絡時,應用程序會發送電子郵件。
https://github.com/thisandagain/queue很有前途。 它具有重試能力並且是持久的。
可以修改AFNetworking的請求操作和請求操作管理器,無需太多工作即可完成此操作。
需要的修改:
AFHTTPRequestOperation
由於沒有連接而失敗時,復制該操作並將其存儲(例如在NSArray
)請注意,復制操作時不會復制完成塊。 從文檔:
-copy
和-copyWithZone:
返回一個帶有原始NSURLRequest
的新操作。 因此,復制機制不是在特定時刻復制操作的精確副本,而是返回一個全新的實例,這對於重試操作非常有用。- 操作的副本將不包括原始的
outputStream
。- 操作副本不包括
completionBlock
,因為它通常會強烈捕獲對self
的引用,否則在復制時會產生指向原始操作的不直觀的副作用。
我不知道有任何開源庫已經實現了這些修改,或者我會指向你那里。
我發現了非常相似的庫,如路徑的作業優先級隊列
https://github.com/lucas34/SwiftQueue/wiki
希望這對某人有所幫助,因為這是非常古老的問題,但可能會幫助像我這樣仍在尋找的人:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.