Просмотр исходного кода

Switched reachability over to using IPv4 for iOS 8.x and OSX 10.9.x.

Christian Noon 9 лет назад
Родитель
Сommit
ef756b0065
1 измененных файлов с 22 добавлено и 10 удалено
  1. 22 10
      Source/NetworkReachabilityManager.swift

+ 22 - 10
Source/NetworkReachabilityManager.swift

@@ -114,20 +114,32 @@ public class NetworkReachabilityManager {
     }
 
     /**
-        Creates a `NetworkReachabilityManager` instance with the default socket address (`sockaddr_in6`).
+        Creates a `NetworkReachabilityManager` instance with the default socket IPv4 or IPv6 address.
 
         - returns: The new `NetworkReachabilityManager` instance.
      */
     public convenience init?() {
-        var address = sockaddr_in6()
-        address.sin6_len = UInt8(sizeofValue(address))
-        address.sin6_family = sa_family_t(AF_INET6)
-
-        guard let reachability = withUnsafePointer(&address, {
-            SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))
-        }) else { return nil }
-
-        self.init(reachability: reachability)
+        if #available(iOS 9.0, OSX 10.10, *) {
+            var address = sockaddr_in6()
+            address.sin6_len = UInt8(sizeofValue(address))
+            address.sin6_family = sa_family_t(AF_INET6)
+
+            guard let reachability = withUnsafePointer(&address, {
+                SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))
+            }) else { return nil }
+
+            self.init(reachability: reachability)
+        } else {
+            var address = sockaddr_in()
+            address.sin_len = UInt8(sizeofValue(address))
+            address.sin_family = sa_family_t(AF_INET)
+
+            guard let reachability = withUnsafePointer(&address, {
+                SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))
+            }) else { return nil }
+
+            self.init(reachability: reachability)
+        }
     }
 
     private init(reachability: SCNetworkReachability) {