2017-02-28 5 views
1

私は昨日飛行機で発見したインターネット接続をチェックするためのコードは非常に遅いです。私はNSUURLをチェックする多くの古いSO answersのテクニックを使用していますが、アプリケーションを本質的に使用できないように接続していない飛行機では、文字通り15秒以上かかるとFALSEを返しました。IOS/Objective-C:インターネット接続を確認する最速の方法 - 2017

これを行うには信頼できる非同期メソッドがありますか?人々は古い回答でTony Millionの到達可能性クラスを推奨していますが、非常に複雑で、Appleは明らかにいくつかのアプリケーションを拒否していますusing it。誰かが2017年にインターネット接続をチェックする最も速く、信頼できる方法を提案できるなら、それを感謝します。ありがとう。

- (BOOL)connected 
    { 
     NSURL *scriptUrl = [NSURL URLWithString:@"https://www.google.com"]; 
     NSData *data = [NSData dataWithContentsOfURL:scriptUrl]; 
     if (data) { 
      NSLog(@"Device is connected to the internet"); 
      return TRUE; 
     } 
     else { 
      NSLog(@"Device is not connected to the internet"); 
      return FALSE; 
     } 
    } 
+1

あなたのテスト環境用のプライベートジェットチャーターを尊重します。それのためにupvoteを持ってください。 – Bathsheba

+1

これはApple独自のサンプルコードです。 https://developer.apple.com/library/content/samplecode/Reachability/Listings/Reachability_Reachability_h.html – Dare

+0

Xcode IDEを改善する方法;) – zztop

答えて

3

到達可能性はさらに2017年

にすべての様々な到達可能性クラスは、Appleのサンプルコードに基づいています...正しい方法です。

C APIを使用しているために複雑に思えるかもしれません。しかし、使い方は簡単です:

- (BOOL)connected 
{ 
    Reachability *reach = [Reachability reachabilityForInternetConnection]; 

    if ([reach isReachable]) { 
     NSLog(@"Device is connected to the internet"); 
     return TRUE; 
    } 
    else { 
     NSLog(@"Device is not connected to the internet"); 
     return FALSE; 
    } 
} 

あなたがAppleの到達可能性クラスの代わりに、トニー百万のを使用する場合は、[reach currentReachabilityStatus] != NotReachable[reach isReachable]を交換してください。

アップルがそれを使用しているアプリケーションを拒否することは心配しないでください。それがあなたに起こるならば、ReachabilityからMyReachabilityへクラスの名前を変更するだけです。

関連する問題