The iOS SDK provides a flexible transfer mechanism with built in retry functionality. The various state changes and associated events that occur when a session runs are detailed in the next sections. For the last two assume a retry policy is in place that allows only one retry.
For brevity, callback method names are shown without the prefix "queue:" or suffix "AtIndexPath:". Furthermore, the callbacks [will|did]ActivateSession, [will|did]StartRunningSession, [will|did]StopRunningSession and [will|did]DeactivateSession are only shown in the first diagram even though these are invoked in the equivalent points in the other diagrams as well.
Note: if the failure occurs during the connection or authentication stages, didStartRunningSession and willStopRunningSession will not be invoked (the invocation sequence will then be willStartRunningSession followed by didStopRunningSession)
1.8.8