を使用してインターネット可用性チェックを使用して NSURLConnection
いますが、成功またはエラーブロックを呼び出すことができません:
- (void)isNetworkAvailableWithCallBack:(SuccessCallback)successBlock onFailure:(FailureCallback)failureBlock {
NSURL *URL = [NSURL URLWithString:@"http://www.google.com/"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue new] completionHandler:^(NSURLResponse *response, NSData __unused *data, NSError *error){
if (response != nil){
NSLog(@"Connected");
dispatch_async(dispatch_get_main_queue(), ^{
successBlock(YES);
});
} else {
dispatch_async(dispatch_get_main_queue(), ^{
failureBlock(YES);
});
NSLog(@"Not Connected");
[self presentError:error];
}
}];
}
アプリがフォアグラウンドにあるとき、または初めてロードするときに、アプリはうまく機能します。もちろん、バックグラウンドでのマルチタスクは有効になっています。この問題は、次の場合に発生します。
アプリを BG に送信します。しばらくお待ちください... アプリは iOS によって強制終了されます。
アプリがバックグラウンドからフォアグラウンドに戻ると、次のステータス コードでブロックが呼び出されます。
Code=-1001
リクエストタイムアウトエラーです。しかし、アプリがバックグラウンドになるたびに呼び出されないのはなぜですか(毎回ではなく、正常に動作します)。
私のコードに何か問題がありますか? そして、これをどのように処理しますか。