gpt4 book ai didi

ios - AFNetworking EnqueueBatchOfHTTPRequestOperations 支持 setReachabilityStatusChangeBlock

转载 作者:行者123 更新时间:2023-11-28 22:29:27 24 4
gpt4 key购买 nike

在初始化 AFHTTPClient 的共享实例后,我有一个 setReachabilityStatusChangeBlock 代码块,然后我有一个 enqueueBatchOfHTTPRequestOperations。问题是 setReachabilityStatusChangeBlock 永远不会被执行,我正在 try catch 可能危及在 enqueueBatchOfHTTPRequestOperations 中下载的任何文件的不良网络连接。

如有任何帮助,我们将不胜感激。

这是我所拥有的示例...

////////////////////////
// Start the operations in the download client
////////////////////////
AFHTTPClient *client = [EMEDownloadClient sharedClient];

// Workaround if network connection is poor
[client setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

NSLog(@"%d", status);

if ( status == AFNetworkReachabilityStatusNotReachable ) {
NSLog(@"Reachability Changed : disconnected");

// update status for download
[dq statusDownload:@"removed"];
// remove assetId from the downloadQueue
[dq resetDownloadQueue];

dispatch_async(dispatch_get_main_queue(), ^{
[SVProgressHUD showErrorWithStatus:
@"There is no network connection, please try again!"];
});

}
else if ( status == AFNetworkReachabilityStatusUnknown ) {
NSLog(@"Reachability Changed : unknown");

// update status for download
[dq statusDownload:@"removed"];
// remove assetId from the downloadQueue
[dq resetDownloadQueue];

dispatch_async(dispatch_get_main_queue(), ^{
[SVProgressHUD showErrorWithStatus:
@"Poor internet connection, please try again from a better \n"
"location."];
});

}
else {
NSLog(@"Reachability Changed : connected");
}

}];


[client enqueueBatchOfHTTPRequestOperations:requestsForDownload
progressBlock:^(NSUInteger numberOfFinishedOperations,
NSUInteger totalNumberOfOperations) {

NSLog(@"%d / %d", numberOfFinishedOperations, totalNumberOfOperations);

dispatch_async(dispatch_get_main_queue(), ^{

[SVProgressHUD showWithStatus:[NSString
stringWithFormat:@"Downloading... %d / %d. This process \n"
"may take a few minutes for assets with multiple playback \n"
"components.",
numberOfFinishedOperations,
totalNumberOfOperations]

maskType:SVProgressHUDMaskTypeGradient];

});

} completionBlock:^(NSArray *operations) {
int i = 0;
for (AFHTTPRequestOperation *ro in operations) {
NSLog(@"Operation statusCode: %ld", (long)[ro.response statusCode]);
if ((long)[ro.response statusCode] != 200 ) {
i++;
}
}

if ( i == 0 ) {
////////////////////////
// Save the managedObjectContext
////////////////////////
NSError *error = nil;

if ([context save:&error]) {

// Sucess!!

// NSLog(@"%s", __PRETTY_FUNCTION__);
NSLog(@"context used in downloading has been saved");

// update status for download
[dq statusDownload:@"downloaded"];
// remove assetId from the downloadQueue
[dq resetDownloadQueue];

dispatch_async(dispatch_get_main_queue(), ^{
[SVProgressHUD showSuccessWithStatus:@"Download Completed"];
});

if (autoplay) {

if ([section isEqualToString:@"generalLibrary"]) {

// autoplay downloaded asset
[[NSNotificationCenter defaultCenter]
postNotificationName:kECHONotificationDownloadAssetDidSucceedAutoplayGeneral
object:self
userInfo: @{ @"assetID": assetID }];

} else if ([section isEqualToString:@"collectionLibrary"]) {

// autoplay downloaded asset
[[NSNotificationCenter defaultCenter] postNotificationName:kECHO
object:self
userInfo: @{ @"assetID": assetID }];

} else if ([section isEqualToString:@"detailView"]) {

// autoplay downloaded asset
[[NSNotificationCenter defaultCenter]
postNotificationName:kECHONotificationDownloadAssetDidSucceedAutoplayDetail
object:self
userInfo: @{ @"assetID": assetID }];
}

}

} else {

NSLog(@"ERROR: %@ %@", [error localizedDescription],
[error userInfo]);

exit(1);
}
} else {

// something went wrong with the download, try again

// update status for download
[dq statusDownload:@"removed"];
// remove assetId from the downloadQueue
[dq resetDownloadQueue];

dispatch_async(dispatch_get_main_queue(), ^{
[SVProgressHUD showErrorWithStatus:@"Something went wrong, \n"
"please try again!"];
});

}

}];

最佳答案

您将 baseURL 定义为 @""。可达性 block 检查 baseURL 的可达性变化。您需要通过将 baseURL 设置为实际 URL 来为可达性系统定义要检查的 URL。

请注意 -[AFHTTPClient startMonitoringNetworkReachability] 开头附近的这段代码:

if (!self.baseURL) {
return;
}

您的可达性监控从未启动,因为未设置基本 URL。

关于ios - AFNetworking EnqueueBatchOfHTTPRequestOperations 支持 setReachabilityStatusChangeBlock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17890191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com