0

デバイスがWIFIに接続されているかどうかを検出する必要があります。

reach = [Reachability reachabilityForLocalWiFi];
status = [reach currentReachabilityStatus];

しかし、iPadでWIFIに接続し、SIMが挿入されていない場合、ステータスはWWANです。これから、SIMを使用してステータスをテストします。

誰かが理由を知っていますか?

編集:

SIMカードで試したところ、ReachableViaWWANとして認識されますが、実際の接続は3G経由です(サーバーは3G接続のみを許可し、WIFIは失敗します)。したがって、到達可能性は時間の経過とともに変化する可能性がありますか?

4

3 に答える 3

2

最後に、私が使用したReachabilityクラスは、変更されたバージョンであるASIHTTPRequestの一部であり、メソッドが書き直されるが、古いメソッド(同じシグネチャを持つ)が削除されないように変更されていることがわかりました。プロジェクトで使用されるサードパーティライブラリ用の静的ライブラリを作成するまで、問題は発生しません(つまり、新しいメソッドが呼び出されます)。これにより、メソッド宣言が、変更されたReachabilityのフレームワークに適合しない古いメソッドにリンクされます。

于 2012-07-16T00:54:28.650 に答える
1

到達可能性*到達可能性=[到達可能性reachabilityForInternetConnection]; BOOL remoteHostStatus = [reachability currentReachabilityStatus];

if (remoteHostStatus == ReachableViaWiFi || remoteHostStatus == ReachableViaWWAN)

{
    [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    NSMutableDictionary *dict                       =   [[NSMutableDictionary alloc] initWithObjectsAndKeys:textFieldUserName.text,@"email",textFieldpass.text,@"password", nil];
    objApp.responseData      = [[NSMutableData data]init];
    objApp.request           = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@login",mainUrl]]];
    NSData * requestBodyData                        =   [NSJSONSerialization dataWithJSONObject:dict options:0 error:NULL];
    objApp.request.HTTPMethod=     @"POST";
    [objApp.request setHTTPBody:requestBodyData];


    [objApp.request setTimeoutInterval:8.0f];
    // Create url connection and fire request
    objApp.connection = [[NSURLConnection alloc] initWithRequest:objApp.request delegate:self];
}
else
{
    [objApp alertViewFromApp:@"check internet connection of device"];
}
于 2014-09-16T06:08:04.650 に答える
0

ステップ1:-

SystemConfigurationをインポートします

ステップ2:-

 //MARK:- Internet available or Not
public  static  func isConnectedToNetwork() -> Bool {

    var zeroAddress = sockaddr_in()
    zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
    zeroAddress.sin_family = sa_family_t(AF_INET)
    let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
        SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))
    }
    var flags = SCNetworkReachabilityFlags()
    if !SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) {
        return false
    }
    let isReachable = (flags.rawValue & UInt32(kSCNetworkFlagsReachable)) != 0
    let needsConnection = (flags.rawValue & UInt32(kSCNetworkFlagsConnectionRequired)) != 0

    return (isReachable && !needsConnection)
}

ステップ3:-

 if Global.isConnectedToNetwork() {

}

于 2016-11-02T05:02:21.923 に答える