В моем приложении я хочу сделать сетевой вызов, только если у меня есть доступ к Интернету.
Примечание. Я подключен к точке Wi-Fi, где нет Интернета.
Я хочу проверить, доступен ли Интернет. Я попытался использовать Reachability, как описано здесь, а также попробовал более простое решение, как описано здесь
Проблема в том, что Reachability возвращает информацию о том, что Интернет доступен, когда это не так. Другое решение требует слишком много времени, чтобы дать ответ. Я пытался установить интервалы времени ожидания для запроса и сеанса, но он игнорируется.
Как я могу проверить доступность Интернета, если я подключен к Wi-Fi без Интернета?
Вот код, который я использую:
- (void) postAsyncTaskWithUrl:(NSString*)urlString
andType:(NSString*)requestType
andToken:(NSString*)token
andPropertiesObject:(id)propObject
urlEncoded:(BOOL)isUrlEncoded
withSuccess:(nullable void(^)(id _Nullable))success
andFailure:(nullable void(^)(id _Nullable))failure
{
internetReachableFoo = [Reachability reachabilityWithHostname:@"www.google.com"];
__weak typeof(self) weakSelf = self;
// Internet is reachable
internetReachableFoo.reachableBlock = ^(Reachability*reach)
{
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:urlSt];
[request setTimeoutInterval:20]; //Ignored ... WHY?
NSURLSessionConfiguration *sessionConfigurations = [NSURLSessionConfiguration defaultSessionConfiguration];
[sessionConfigurations setTimeoutIntervalForRequest:20]; //Ignored ... WHY?
[sessionConfigurations setTimeoutIntervalForResource:20]; //Ignored ... WHY?
// NSURLSession *session = [NSURLSession sharedSession];
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfigurations];
[[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
}
}
}