-2

google.comが機能しない場合!しかし、ネットは大丈夫です。コードはエラーをもたらします。だから私はネットのステータスを検出するために「google.com」を削除したいと思います。

アドレスなしで到達可能性の方法を見つけることができません。

#import "Reachability.h"

static  ReachabilityCenter *reachCenter;
@implementation ReachabilityCenter

@synthesize reachablity;
@synthesize isConnectedNet;

+(id)shareCenter
{
    if(!reachCenter)
    {
         reachCenter = [[ReachabilityCenter alloc] init];
         reachCenter.reachablity = [Reachability reachabilityWithHostname:@"www.google.com"];
    }
    return reachCenter;
}

-(void)reachabilityChanged:(NSNotification*)note
{
    Reachability * reach = [note object];
    isConnectedNet = [reach isReachable];
}

-(void)beginListening
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(reachabilityChanged:)
                                                 name:kReachabilityChangedNotification
                                               object:nil];

    [reachCenter.reachablity  startNotifier];

}
@end

私はコードをテストし、ウェブサイト、IPなしでステータスを検出します。

-(void)detectNetStatus
{
    Reachability *r =  [Reachability reachabilityForLocalWiFi];
    isConnectedNet = [r currentReachabilityStatus];
}

-(NetworkStatus)isConnectedNet
{
    [self detectNetStatus];
    return isConnectedNet;
}
4

1 に答える 1

0

あなたが求めていることは実際には不可能であり、その理由は次のとおりです。ネットワーク接続が「確実に」(希望どおりに)アクティブになっていることを、それを使用せずに検証することはできません。それを使用するには、期待されるリソースX、Y、またはZとの接続を意味する何かに使用する必要があります。

例として、次のことを考慮してください。外部インターネットアクセスがないローカルネットワークに接続している場合はどうなりますか?接続が利用可能であるように見えますが、実際には利用可能です---それはあなたが考えていたものではありません。

したがって、X、Y、またはZに対してテストして、アクセスしたいものが利用可能であることを検証する必要があります。

追加情報:

ネットワーク接続が利用可能かどうかを判断できます。

探す:到達可能性* internetReach;

Appleの例:http ://developer.apple.com/library/ios/#samplecode/Reachability/Listings/Classes_ReachabilityAppDelegate_h.html#//apple_ref/doc/uid/DTS40007324-Classes_ReachabilityAppDelegate_h-DontLinkElementID_3

問題は---ネットワーク接続が利用可能であるという理由だけで、上記のinternetReachは---接続について何も教えてくれません。それは単にローカルネットワークである可能性があります。たとえば、Apple.comやGoogle.comなど、利用可能になると予想される特定の何かを接続しようとするまで、見つけることはできません。

于 2013-01-14T03:21:17.450 に答える