2

複数のファイルをアップロードするアプリを開発しています。アップロードには、 を使用しますAFHTTPRequestOperation。正常に動作しますが、画面をロックしてロックを解除すると、ファイルのアップロードが停止します。

ファイルをアップロードするための私のコードはここにあります

NSUserDefaults *defaultUser = [NSUserDefaults standardUserDefaults];
NSString *userId = [defaultUser stringForKey:@"UserId"];

AFHTTPClient *client= [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",UploadURL,userId]]];
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:nil];
NSMutableURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:nil parameters:params constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
        [formData appendPartWithFileData: data name:@"f" fileName:[NSString stringWithFormat:@"%d_image.jpeg",rand()] mimeType:@"image/jpeg"];
    }];

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {}];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"error: %@", [operation error]);
        if(error.code == -1001){
        UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"Error!"
                                                          message:@"The request timed out." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [myAlert show];
        }
    }];


[operation start];

この状況を処理するための提案を誰かに教えてもらえますか。

ありがとう。

4

1 に答える 1

2

(1) 次のコードを追加します。

[operation setShouldExecuteAsBackgroundTaskWithExpirationHandler:^{
    // Handle iOS shutting you down (possibly make a note of where you
    // stopped so you can resume later)
}];

(2) 次の行を変更します。

[operation start];

[client enqueueHTTPRequestOperation:operation];

(3) 操作の割り当てが解除されないように、AFHTTPClient への強力な参照を保持します (これは通常、シングルトン パターンの AFHTTPClient に対して行われます)。

于 2013-05-30T18:58:40.657 に答える