gpt4 book ai didi

ios - AFNetworking 2.0 队列请求在设备离线时使用 setReachabilityStatusChangeBlock 不执行任何操作

转载 作者:技术小花猫 更新时间:2023-10-29 11:14:10 24 4
gpt4 key购买 nike

我一直在尝试想出一个解决方案,在设备离线时使用 AFNetworking 对 HTTP 请求进行排队,这样当它重新在线时,请求就会完成。据我所知,这可以设置 setReachabilityStatusChangeBlock: 参数。

到目前为止,这是我所拥有的:

// ViewController.h
@interface XYZTicketViewController : UIViewController<NSURLConnectionDelegate> // This is from before I started using AFNetworking, I'm intending to change all the requests to use AFNetworking in the near future.
@end


// ViewController.m
(...)
#import <AFHTTPRequestOperationManager.h>
#import <AFNetworkReachabilityManager.h>
(...)
@interface XYZTicketViewController ()
- (void)viewDidLoad
(...)
{
NSURL *baseURL = [NSURL URLWithString:@"http://54.213.167.202"];
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:baseURL];

NSOperationQueue *operationQueue = manager.operationQueue;
[manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusReachableViaWWAN:
case AFNetworkReachabilityStatusReachableViaWiFi:
[operationQueue setSuspended:NO];
NSLog(@"WIFI");
break;
case AFNetworkReachabilityStatusNotReachable:
default:
[operationQueue setSuspended:YES];
NSLog(@"oflline, baby");
break;
}
}];

NSDictionary *parameters = @{@"action": @"login", @"user": @"mail.address@gmail.com", @"pass": @"howdoyouturnthison"};
[manager GET:@"http://54.213.167.202/api.php" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
(...)
}

我找不到任何示例,但我阅读了 here这是可能的,但到目前为止,当在线状态发生变化时,任何事情都会发生。

希望你能帮帮我

最佳答案

在调用 setReachabilityStatusChangeBlock 之前,您需要先调用 startMonitoring

[manager.reachabilityManager startMonitoring];

如果您使用的是 AFNetworking 2.0,我建议您执行以下操作:

[[AFNetworkReachabilityManager sharedManager] startMonitoring];
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
DLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status));
switch (status) {
case AFNetworkReachabilityStatusReachableViaWWAN:
case AFNetworkReachabilityStatusReachableViaWiFi:
[operationQueue setSuspended:NO];
NSLog(@"WIFI");
break;
case AFNetworkReachabilityStatusNotReachable:
default:
[operationQueue setSuspended:YES];
NSLog(@"offline, baby");
break;
}
}];

关于ios - AFNetworking 2.0 队列请求在设备离线时使用 setReachabilityStatusChangeBlock 不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21938680/

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