0

これはこの質問の複製です。SCNetworkReachabilityGetFlags は、ワイヤレスが使用可能な場合でも 0 を返します

その投稿で提案されているすべてのソリューションを試しました。しかし、どれも私のために働いていませんでした。

    SCNetworkReachabilityRef  reachabilityRef = SCNetworkReachabilityCreateWithName(NULL, [hostname UTF8String]);
    BOOL success = SCNetworkReachabilityGetFlags(reachabilityRef, &flags); //flags are always 0.
    bool isAvailable = success && (flags & kSCNetworkFlagsReachable) && !(flags & kSCNetworkFlagsConnectionRequired);

    CFRelease(reachabilityRef);

    if(isAvailable)
    {
        NSLog(@"Host is reachable: %d", flags);
    }
    else
    {
        NSLog(@"Host is unreachable");
    }

VPN 経由でホストに接続しようとしています。誰かが回避策を提案できますか?

4

1 に答える 1

2

私はこの API を使用して、配送アプリで大きな成功を収めました。まず、ホスト名は www.apple.com のようにする必要があります。到達可能性は、ホストが存在するかどうかを判断するのに時間がかかります。

私がアプリで採用した戦略は、起動時にそこにあると想定し、数秒後 (20 秒など) に起動する到達可能性通知を監視することでした。それほど長く待つことができない場合は、これに関する他の投稿があり、これに対処するための戦略が記載されています。たとえば、すぐにホストに ping を実行してみてください。

モバイルでは、ローンチ時にこのステータスを判断するには多くのハードルがあり、完全な解決策はありません。

私がしたことは、それが稼働していると仮定し、「接続中...」というスピナーを設置し、後で到達可能性に失敗した場合はそれを削除しました(またはリクエストが失敗したときに削除しました)。それ以来、定期的に更新されているようです (私はトンネルを通る電車にアプリを持っていましたが、ネットワーク アクセスが変更されると、「切断」と「接続」の状態が表示されるのを確認できました。

于 2013-04-25T21:02:46.920 に答える