OfflineRequestManager
final class OfflineRequestManager : NSObject, NSCoding, ServiceProvider
Class for handling outstanding network requests; all data is written to disk in the case of app termination
-
Object listening to all callbacks from the OfflineRequestManager. Must implement either delegate or requestInstantiationBlock to send archived requests when recovering from app termination
Declaration
Swift
var delegate: OfflineRequestManagerDelegate? { get set }
-
Alternative means that allows instantiation of OfflineRequest objects from the dictionaries saved to disk without requiring a dedicated delegate
Declaration
Swift
var requestInstantiationBlock: (([String : Any]) -> OfflineRequest?)? { get set }
-
Property indicating whether there is currently an internet connection
Declaration
Swift
private(set) var connected: Bool { get set }
-
Total number of ongoing requests
Declaration
Swift
private(set) var totalRequestCount: Int
-
Index of current request within the currently ongoing requests
Declaration
Swift
private(set) var completedRequestCount: Int
-
Current request list
Declaration
Swift
var requests: [OfflineRequest] { get }
-
Connectivity used to observe connectivity status. Can be set to nil to allow requests to be attempted when offline
Declaration
Swift
var connectivity: Connectivity?
-
Time limit in seconds before OfflineRequestManager will kill an ongoing OfflineRequest
Declaration
Swift
var requestTimeLimit: TimeInterval
-
Maximum number of simultaneous requests allowed
Declaration
Swift
var simultaneousRequestCap: Int
-
Time between submission attempts
Declaration
Swift
var submissionInterval: TimeInterval { get set }
-
Name of file in Documents directory to which OfflineRequestManager object is archived by default
Declaration
Swift
static let defaultFileName: String
-
Default singleton OfflineRequestManager
Declaration
Swift
static var defaultManager: OfflineRequestManager { get }
-
Current progress for all ongoing requests (ranges from 0 to 1)
Declaration
Swift
private(set) var progress: Double { get set }
-
Request actions currently being executed
Declaration
Swift
private(set) var ongoingRequests: [OfflineRequest]
-
Request all queued actions
Declaration
Swift
private(set) var incompleteRequests: [OfflineRequest]
-
Generates an OfflineRequestManager instance tied to a file name in the Documents directory Creates a new object or pulls up the object written to disk if possible
Declaration
Swift
static func manager(withFileName fileName: String) -> OfflineRequestManager
-
Instantiates the OfflineRequestManager already written to disk if possible
Declaration
Swift
static func archivedManager(fileName: String = defaultFileName) -> OfflineRequestManager?
-
Enqueues a single OfflineRequest
Declaration
Swift
func queueRequest(_ request: OfflineRequest, startImmediately: Bool = true)
Parameters
request
OfflineRequest to be queued
startImmediately
indicates whether an attempt should be made immediately or deferred until the next timer
-
Clears out the current OfflineRequest queue and returns to a neutral state
Declaration
Swift
func clearAllRequests()
-
Writes the OfflineRequestManager instances to the Documents directory
Declaration
Swift
func saveToDisk()
-
Enqueues an array of OfflineRequest objects
Declaration
Swift
func queueRequests(_ requests: [OfflineRequest], startImmediately: Bool = true)
Parameters
request
Array of OfflineRequest objects to be queued
startImmediately
indicates whether an attempt should be made immediately or deferred until the next timer
-
Allows for adjustment to pending requests before they are executed
Declaration
Swift
func modifyPendingRequests(_ modifyBlock: (([OfflineRequest]) -> [OfflineRequest]))
Parameters
modifyBlock
block making any necessary adjustments to the array of pending requests
-
Take next operation from queue
Declaration
Swift
@objc func attemptNextOperation()
-
Declaration
Swift
func request(_ request: OfflineRequest, didUpdateTo progress: Double)
-
Declaration
Swift
func requestNeedsSave(_ request: OfflineRequest)
-
Declaration
Swift
func requestSentHeartbeat(_ request: OfflineRequest)