AFNetworking 2 と Reachability を使用して「インターネット接続なし」アラートを表示する方法を見つけようとしています。
コントローラに Reachability と AFNetworking をインポートしました。AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:url];
AFNetworking 2 のドキュメントからコピーした Iで始まるコードの部分は、それがどこに属するのかわかりません。
アップデート
インターネットに接続されていないときはいつでもアプリにアラートが表示されるようになりましたが、アラートが表示されるまでに時間がかかりすぎます。また、これがコードを構築するための最良の方法であるとは思えません。(また、メイン ビュー コントローラーを使用していて、アプリがクラッシュする接続がないときにセルをクリックすると、これを修正する方法があるかどうかわかりません)。
- (void)viewDidLoad
{
[super viewDidLoad];
Reachability * reach = [Reachability reachabilityWithHostname:@"www.google.com"];
reach.reachableBlock = ^(Reachability * reachability)
{
NSLog(@"Reachable");
};
reach.unreachableBlock = ^(Reachability * reachability)
{
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"No internet connection"
message:@"No internet connection"
delegate:self
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
NSLog(@"Not Reachable");
};
[reach startNotifier];
self.upcomingReleases = [[NSMutableArray alloc] init];
[self makeReleasesRequests];
self.navigationController.navigationBar.tintColor = [UIColor whiteColor]; // Make nav items white
[self.collectionView registerClass:[ReleaseCell class] forCellWithReuseIdentifier:@"ReleaseCell"];
}
-(void)makeReleasesRequests
{
NSURL *url = [NSURL URLWithString:@"http://www.soleresource.com/upcoming.json"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.responseSerializer = [AFJSONResponseSerializer serializer];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"@");
self.upcomingReleases = [responseObject objectForKey:@"upcoming_releases"];
[self.collectionView reloadData];
} failure:nil];
[operation start];
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:url];
NSOperationQueue *operationQueue = manager.operationQueue;
[manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusReachableViaWWAN:
case AFNetworkReachabilityStatusReachableViaWiFi:
[operationQueue setSuspended:NO];
break;
case AFNetworkReachabilityStatusNotReachable:
default:
[operationQueue setSuspended:YES];
break;
}
}];
}
ありがとう。