0
votes

I'm using AFHTTPRequestOperation to download a file. But on pausing and resuming the operation, the api gives incorrect progress count. I am downloading data using following code

 NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:str]];
_downloadOperation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
_downloadOperation.outputStream = [NSOutputStream outputStreamToFileAtPath:strFilePath append:YES];

[_downloadOperation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {

    NSLog(@"Progress %lld",totalBytesRead * 100 / totalBytesExpectedToRead);

}];

[_downloadOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

    NSLog(@"downloaded %@",operation.request.URL);


} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

    NSLog(@"failed");

}];
[_downloadOperation start];

I pause the operation when user goes in background,

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    if ([objAPI.downloadOperation isExecuting])
        [objAPI.downloadOperation pause];
}

and resume operation when user comes in foreground

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    if ([objAPI.downloadOperation isPaused])
        [objAPI.downloadOperation resume];
}

Example: If the operation is paused at progress 20% , on resuming it starts from 20% but ends at 120% . In other words the progress count goes incorrectly after pausing the operation.

Kindly help me to solve the problem

1

1 Answers

1
votes

There is a related issue which would cause the percentages when using AFURLSessionManager to be incorrect.

The pull-request at https://github.com/AFNetworking/AFNetworking/pull/1786 may fix this issue.