5

以下が表示される理由を理解するための助けが必要です。

AFNetworking 3.0.4iOS9.x で

到達可能性マネージャーを取得すると

AFNetworkReachabilityManager.sharedManager()

次に setReachabilityStatusChangeBlock を追加すると、期待どおりの結果が得られます。

  • 機内モード:NotReachable
  • WiFi オフ:ReachableViaWWAN
  • Wi-Fi オン:ReachableViaWiFi

そのため、一般的なケースはすべて期待どおりに機能しています。

managerForAddressしかし、もっと正確に言いたいのですが、どの IP アドレスと話しているかはわかっているので、代わりに使用したいと思います。これは私がネットからカーゴカルトしたコードです(ほとんどの例は、迅速ではなくobj-c用です)-次の- ip はアドレスの文字列です(点線のクワッド形式):

let isLittleEndian = Int(OSHostByteOrder()) == OSLittleEndian

let htons  = isLittleEndian ? _OSSwapInt16 : { $0 }

var address = sockaddr_in()
address.sin_len = UInt8(sizeofValue(address))
address.sin_family = sa_family_t(AF_INET)
address.sin_port = htons(443);
address.sin_addr.s_addr = inet_addr(ip);

addressReachability = withUnsafePointer(&address) {
    AFNetworkReachabilityManager(forAddress: UnsafePointer($0))
}

その後、setReachabilityStatusChangeBlock をこのマネージャーに追加して、監視を開始できます。

ここで - IP として何を送信しても問題ありません - 空の文字列、443 がリッスンしている有効な IP アドレス、443 がリッスンしていない有効な IP アドレス、無効な IP アドレス - 結果は sharedManager の結果と正確に一致します- Wi-Fi を使用しているReachableViaWiFi場合は 、4G のみを使用しているReachableViaWWAN場合は 、機内モードの場合は ですNotReachable

つまり、 の使用方法を完全に誤解しているかmanagerForAddress、コードのバグがあるかのどちらかです:) どちらの場合でも、誤解/間違っていることを聞きたいです。

4

0 に答える 0