From 48cfd709a91c725cb135b0c1c2ab526181a6efbb Mon Sep 17 00:00:00 2001 From: Hamilton Chapman Date: Tue, 13 Mar 2018 10:24:39 +0000 Subject: [PATCH] Use Sources and Tests directories. Add a ReachabilityTests target that gets run as part of the Reachability scheme. Add schemes to run all of the sample apps. Clean up sample apps a little bit. --- Reachability.xcodeproj/project.pbxproj | 187 +++++++++++++++--- .../xcschemes/Reachability.xcscheme | 2 +- ReachabilityAppleTVSample/AppDelegate.swift | 1 - .../Base.lproj/Main.storyboard | 35 ++-- .../ViewController.swift | 9 +- ReachabilityMacSample/AppDelegate.swift | 1 - ReachabilityMacSample/ViewController.swift | 7 +- ReachabilitySample/Base.lproj/Main.storyboard | 41 ++-- ReachabilitySample/ViewController.swift | 13 +- {Reachability => Sources}/Info.plist | 0 {Reachability => Sources}/Reachability.h | 0 {Reachability => Sources}/Reachability.swift | 27 ++- {ReachabilityTests => Tests}/Info.plist | 0 .../ReachabilityTests.swift | 10 +- 14 files changed, 234 insertions(+), 99 deletions(-) rename {Reachability => Sources}/Info.plist (100%) rename {Reachability => Sources}/Reachability.h (100%) rename {Reachability => Sources}/Reachability.swift (95%) rename {ReachabilityTests => Tests}/Info.plist (100%) rename {ReachabilityTests => Tests}/ReachabilityTests.swift (93%) diff --git a/Reachability.xcodeproj/project.pbxproj b/Reachability.xcodeproj/project.pbxproj index 23d01b57..20395f17 100644 --- a/Reachability.xcodeproj/project.pbxproj +++ b/Reachability.xcodeproj/project.pbxproj @@ -11,23 +11,32 @@ 00C54B241C09CF68001C3F12 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00C54B231C09CF68001C3F12 /* ViewController.swift */; }; 00C54B261C09CF68001C3F12 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 00C54B251C09CF68001C3F12 /* Assets.xcassets */; }; 00C54B291C09CF68001C3F12 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 00C54B271C09CF68001C3F12 /* Main.storyboard */; }; + 335AD58E2052EA92000D4D08 /* Reachability.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335AD5882052EA92000D4D08 /* Reachability.swift */; }; + 335AD58F2052EA92000D4D08 /* Reachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 335AD5892052EA92000D4D08 /* Reachability.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 335AD5902052EA92000D4D08 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 335AD58A2052EA92000D4D08 /* Info.plist */; }; + 335AD5A22052EB32000D4D08 /* ReachabilityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335AD58C2052EA92000D4D08 /* ReachabilityTests.swift */; }; + 335AD5A52052EE07000D4D08 /* Reachability.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA7344721BE7678B008AFE69 /* Reachability.framework */; }; 57A45A041C197BE800384AE4 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57A45A031C197BE800384AE4 /* AppDelegate.swift */; }; 57A45A061C197BE800384AE4 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57A45A051C197BE800384AE4 /* ViewController.swift */; }; 57A45A091C197BE800384AE4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 57A45A071C197BE800384AE4 /* Main.storyboard */; }; 57A45A0B1C197BE800384AE4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 57A45A0A1C197BE800384AE4 /* Assets.xcassets */; }; - AA7344761BE7678B008AFE69 /* Reachability.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7344751BE7678B008AFE69 /* Reachability.h */; settings = {ATTRIBUTES = (Public, ); }; }; AA7344931BE76820008AFE69 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA7344921BE76820008AFE69 /* AppDelegate.swift */; }; AA7344951BE76820008AFE69 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA7344941BE76820008AFE69 /* ViewController.swift */; }; AA7344981BE76820008AFE69 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA7344961BE76820008AFE69 /* Main.storyboard */; }; AA73449A1BE76820008AFE69 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AA7344991BE76820008AFE69 /* Assets.xcassets */; }; - AA7344B11BE76862008AFE69 /* Reachability.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA7344B01BE76862008AFE69 /* Reachability.swift */; }; AA7344B51BE769D6008AFE69 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = AA7344B31BE769D6008AFE69 /* LaunchScreen.xib */; }; - CA6187661F8D220200FD5234 /* CHANGELOG.md in Sources */ = {isa = PBXBuildFile; fileRef = CA6187651F8D220200FD5234 /* CHANGELOG.md */; }; CAC230C51BF2180000F6464E /* Reachability.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA7344721BE7678B008AFE69 /* Reachability.framework */; }; CAC230C61BF2180000F6464E /* Reachability.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = AA7344721BE7678B008AFE69 /* Reachability.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 335AD59D2052EB22000D4D08 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = AA7344691BE7678B008AFE69 /* Project object */; + proxyType = 1; + remoteGlobalIDString = AA7344711BE7678B008AFE69; + remoteInfo = Reachability; + }; CAC230C71BF2180000F6464E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = AA7344691BE7678B008AFE69 /* Project object */; @@ -78,6 +87,12 @@ 00C54B251C09CF68001C3F12 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 00C54B281C09CF68001C3F12 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 00C54B2A1C09CF68001C3F12 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 335AD5882052EA92000D4D08 /* Reachability.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Reachability.swift; sourceTree = ""; }; + 335AD5892052EA92000D4D08 /* Reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = ""; }; + 335AD58A2052EA92000D4D08 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 335AD58C2052EA92000D4D08 /* ReachabilityTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReachabilityTests.swift; sourceTree = ""; }; + 335AD58D2052EA92000D4D08 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 335AD5972052EB22000D4D08 /* ReachabilityTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ReachabilityTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 57A45A011C197BE800384AE4 /* ReachabilityAppleTVSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ReachabilityAppleTVSample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 57A45A031C197BE800384AE4 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 57A45A051C197BE800384AE4 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; @@ -85,15 +100,12 @@ 57A45A0A1C197BE800384AE4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 57A45A0C1C197BE800384AE4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; AA7344721BE7678B008AFE69 /* Reachability.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Reachability.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - AA7344751BE7678B008AFE69 /* Reachability.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = ""; }; - AA7344771BE7678B008AFE69 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; AA7344901BE76820008AFE69 /* ReachabilitySample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ReachabilitySample.app; sourceTree = BUILT_PRODUCTS_DIR; }; AA7344921BE76820008AFE69 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; AA7344941BE76820008AFE69 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; AA7344971BE76820008AFE69 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; AA7344991BE76820008AFE69 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; AA73449E1BE76820008AFE69 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - AA7344B01BE76862008AFE69 /* Reachability.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Reachability.swift; sourceTree = ""; }; AA7344B41BE769D6008AFE69 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; CA1983301F6FD0CD007D2DD1 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; CA6187601F8D21D700FD5234 /* CONTRIBUTING.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CONTRIBUTING.md; sourceTree = ""; }; @@ -110,6 +122,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 335AD5942052EB22000D4D08 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 335AD5A52052EE07000D4D08 /* Reachability.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 57A459FE1C197BE800384AE4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -147,6 +167,32 @@ path = ReachabilityMacSample; sourceTree = ""; }; + 335AD5872052EA92000D4D08 /* Sources */ = { + isa = PBXGroup; + children = ( + 335AD5882052EA92000D4D08 /* Reachability.swift */, + 335AD5892052EA92000D4D08 /* Reachability.h */, + 335AD58A2052EA92000D4D08 /* Info.plist */, + ); + path = Sources; + sourceTree = ""; + }; + 335AD58B2052EA92000D4D08 /* Tests */ = { + isa = PBXGroup; + children = ( + 335AD58C2052EA92000D4D08 /* ReachabilityTests.swift */, + 335AD58D2052EA92000D4D08 /* Info.plist */, + ); + path = Tests; + sourceTree = ""; + }; + 335AD5A42052EE07000D4D08 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; 57A45A021C197BE800384AE4 /* ReachabilityAppleTVSample */ = { isa = PBXGroup; children = ( @@ -167,11 +213,13 @@ CA6187601F8D21D700FD5234 /* CONTRIBUTING.md */, CA6187611F8D21D700FD5234 /* LICENSE */, CA6187621F8D21D700FD5234 /* ReachabilitySwift.podspec */, - AA7344741BE7678B008AFE69 /* Reachability */, + 335AD5872052EA92000D4D08 /* Sources */, + 335AD58B2052EA92000D4D08 /* Tests */, AA7344911BE76820008AFE69 /* ReachabilitySample */, 00C54B201C09CF68001C3F12 /* ReachabilityMacSample */, 57A45A021C197BE800384AE4 /* ReachabilityAppleTVSample */, AA7344731BE7678B008AFE69 /* Products */, + 335AD5A42052EE07000D4D08 /* Frameworks */, ); sourceTree = ""; }; @@ -182,20 +230,11 @@ AA7344901BE76820008AFE69 /* ReachabilitySample.app */, 00C54B1F1C09CF67001C3F12 /* ReachabilityMacSample.app */, 57A45A011C197BE800384AE4 /* ReachabilityAppleTVSample.app */, + 335AD5972052EB22000D4D08 /* ReachabilityTests.xctest */, ); name = Products; sourceTree = ""; }; - AA7344741BE7678B008AFE69 /* Reachability */ = { - isa = PBXGroup; - children = ( - AA7344B01BE76862008AFE69 /* Reachability.swift */, - AA7344751BE7678B008AFE69 /* Reachability.h */, - AA7344771BE7678B008AFE69 /* Info.plist */, - ); - path = Reachability; - sourceTree = ""; - }; AA7344911BE76820008AFE69 /* ReachabilitySample */ = { isa = PBXGroup; children = ( @@ -216,7 +255,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - AA7344761BE7678B008AFE69 /* Reachability.h in Headers */, + 335AD58F2052EA92000D4D08 /* Reachability.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -241,6 +280,24 @@ productReference = 00C54B1F1C09CF67001C3F12 /* ReachabilityMacSample.app */; productType = "com.apple.product-type.application"; }; + 335AD5962052EB22000D4D08 /* ReachabilityTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 335AD59F2052EB22000D4D08 /* Build configuration list for PBXNativeTarget "ReachabilityTests" */; + buildPhases = ( + 335AD5932052EB22000D4D08 /* Sources */, + 335AD5942052EB22000D4D08 /* Frameworks */, + 335AD5952052EB22000D4D08 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 335AD59E2052EB22000D4D08 /* PBXTargetDependency */, + ); + name = ReachabilityTests; + productName = ReachabilityTests; + productReference = 335AD5972052EB22000D4D08 /* ReachabilityTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; 57A45A001C197BE800384AE4 /* ReachabilityAppleTVSample */ = { isa = PBXNativeTarget; buildConfigurationList = 57A45A0F1C197BE800384AE4 /* Build configuration list for PBXNativeTarget "ReachabilityAppleTVSample" */; @@ -302,7 +359,7 @@ AA7344691BE7678B008AFE69 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0710; + LastSwiftUpdateCheck = 0920; LastUpgradeCheck = 0900; ORGANIZATIONNAME = "Ashley Mills"; TargetAttributes = { @@ -310,6 +367,10 @@ CreatedOnToolsVersion = 7.1.1; LastSwiftMigration = 0900; }; + 335AD5962052EB22000D4D08 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Automatic; + }; 57A45A001C197BE800384AE4 = { CreatedOnToolsVersion = 7.1.1; LastSwiftMigration = 0900; @@ -341,6 +402,7 @@ projectRoot = ""; targets = ( AA7344711BE7678B008AFE69 /* Reachability */, + 335AD5962052EB22000D4D08 /* ReachabilityTests */, AA73448F1BE76820008AFE69 /* ReachabilitySample */, 00C54B1E1C09CF67001C3F12 /* ReachabilityMacSample */, 57A45A001C197BE800384AE4 /* ReachabilityAppleTVSample */, @@ -358,6 +420,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 335AD5952052EB22000D4D08 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 57A459FF1C197BE800384AE4 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -371,6 +440,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 335AD5902052EA92000D4D08 /* Info.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -396,6 +466,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 335AD5932052EB22000D4D08 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 335AD5A22052EB32000D4D08 /* ReachabilityTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 57A459FD1C197BE800384AE4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -409,8 +487,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - AA7344B11BE76862008AFE69 /* Reachability.swift in Sources */, - CA6187661F8D220200FD5234 /* CHANGELOG.md in Sources */, + 335AD58E2052EA92000D4D08 /* Reachability.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -426,6 +503,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 335AD59E2052EB22000D4D08 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = AA7344711BE7678B008AFE69 /* Reachability */; + targetProxy = 335AD59D2052EB22000D4D08 /* PBXContainerItemProxy */; + }; CAC230C81BF2180000F6464E /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = AA7344711BE7678B008AFE69 /* Reachability */; @@ -504,6 +586,56 @@ }; name = Release; }; + 335AD5A02052EB22000D4D08 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.13; + PRODUCT_BUNDLE_IDENTIFIER = uk.co.joylordsystems.Reachability.ReachabilityTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = ""; + SUPPORTED_PLATFORMS = "macosx appletvsimulator appletvos iphoneos iphonesimulator"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_VERSION = 4.0; + }; + name = Debug; + }; + 335AD5A12052EB22000D4D08 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.13; + PRODUCT_BUNDLE_IDENTIFIER = uk.co.joylordsystems.Reachability.ReachabilityTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = ""; + SUPPORTED_PLATFORMS = "macosx appletvsimulator appletvos iphoneos iphonesimulator"; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 4.0; + }; + name = Release; + }; 57A45A0D1C197BE800384AE4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -662,7 +794,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Reachability/Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -693,7 +825,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Reachability/Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -751,6 +883,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 335AD59F2052EB22000D4D08 /* Build configuration list for PBXNativeTarget "ReachabilityTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 335AD5A02052EB22000D4D08 /* Debug */, + 335AD5A12052EB22000D4D08 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 57A45A0F1C197BE800384AE4 /* Build configuration list for PBXNativeTarget "ReachabilityAppleTVSample" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Reachability.xcodeproj/xcshareddata/xcschemes/Reachability.xcscheme b/Reachability.xcodeproj/xcshareddata/xcschemes/Reachability.xcscheme index 0a5dd15f..1daced6e 100644 --- a/Reachability.xcodeproj/xcshareddata/xcschemes/Reachability.xcscheme +++ b/Reachability.xcodeproj/xcshareddata/xcschemes/Reachability.xcscheme @@ -33,7 +33,7 @@ skipped = "NO"> diff --git a/ReachabilityAppleTVSample/AppDelegate.swift b/ReachabilityAppleTVSample/AppDelegate.swift index c3d365ca..3bdc6bb1 100644 --- a/ReachabilityAppleTVSample/AppDelegate.swift +++ b/ReachabilityAppleTVSample/AppDelegate.swift @@ -17,4 +17,3 @@ class AppDelegate: UIResponder, UIApplicationDelegate { return true } } - diff --git a/ReachabilityAppleTVSample/Base.lproj/Main.storyboard b/ReachabilityAppleTVSample/Base.lproj/Main.storyboard index d41e9644..21607bf6 100644 --- a/ReachabilityAppleTVSample/Base.lproj/Main.storyboard +++ b/ReachabilityAppleTVSample/Base.lproj/Main.storyboard @@ -1,7 +1,12 @@ - - + + + + + - + + + @@ -17,33 +22,27 @@ - - + - - - - - - + + + + diff --git a/ReachabilityAppleTVSample/ViewController.swift b/ReachabilityAppleTVSample/ViewController.swift index abfbe01f..887f6f21 100644 --- a/ReachabilityAppleTVSample/ViewController.swift +++ b/ReachabilityAppleTVSample/ViewController.swift @@ -53,7 +53,12 @@ class ViewController: UIViewController { self.updateLabelColourWhenNotReachable(reachability) } } else { - NotificationCenter.default.addObserver(self, selector: #selector(ViewController.reachabilityChanged(_:)), name: .reachabilityChanged, object: reachability) + NotificationCenter.default.addObserver( + self, + selector: #selector(ViewController.reachabilityChanged(_:)), + name: .reachabilityChanged, + object: reachability + ) } } @@ -108,6 +113,4 @@ class ViewController: UIViewController { deinit { stopNotifier() } - } - diff --git a/ReachabilityMacSample/AppDelegate.swift b/ReachabilityMacSample/AppDelegate.swift index acd25d4a..d07cb570 100644 --- a/ReachabilityMacSample/AppDelegate.swift +++ b/ReachabilityMacSample/AppDelegate.swift @@ -16,4 +16,3 @@ class AppDelegate: NSObject, NSApplicationDelegate { func applicationWillTerminate(_ aNotification: Notification) { } } - diff --git a/ReachabilityMacSample/ViewController.swift b/ReachabilityMacSample/ViewController.swift index dcb8f3ef..b04b3b71 100644 --- a/ReachabilityMacSample/ViewController.swift +++ b/ReachabilityMacSample/ViewController.swift @@ -53,7 +53,12 @@ class ViewController: NSViewController { self.updateLabelColourWhenNotReachable(reachability) } } else { - NotificationCenter.default.addObserver(self, selector: #selector(ViewController.reachabilityChanged(_:)), name: .reachabilityChanged, object: reachability) + NotificationCenter.default.addObserver( + self, + selector: #selector(ViewController.reachabilityChanged(_:)), + name: .reachabilityChanged, + object: reachability + ) } } diff --git a/ReachabilitySample/Base.lproj/Main.storyboard b/ReachabilitySample/Base.lproj/Main.storyboard index 1ba0a4d9..2a9c5523 100644 --- a/ReachabilitySample/Base.lproj/Main.storyboard +++ b/ReachabilitySample/Base.lproj/Main.storyboard @@ -1,9 +1,12 @@ - - + + + + + - - + + @@ -15,39 +18,29 @@ - + - - + - - - - - - + + + + - - - - - diff --git a/ReachabilitySample/ViewController.swift b/ReachabilitySample/ViewController.swift index 1103d106..eaa13ac5 100644 --- a/ReachabilitySample/ViewController.swift +++ b/ReachabilitySample/ViewController.swift @@ -53,7 +53,12 @@ class ViewController: UIViewController { self.updateLabelColourWhenNotReachable(reachability) } } else { - NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged(_:)), name: .reachabilityChanged, object: reachability) + NotificationCenter.default.addObserver( + self, + selector: #selector(reachabilityChanged(_:)), + name: .reachabilityChanged, + object: reachability + ) } } @@ -93,8 +98,7 @@ class ViewController: UIViewController { self.networkStatus.text = "\(reachability.connection)" } - - + @objc func reachabilityChanged(_ note: Notification) { let reachability = note.object as! Reachability @@ -108,7 +112,4 @@ class ViewController: UIViewController { deinit { stopNotifier() } - } - - diff --git a/Reachability/Info.plist b/Sources/Info.plist similarity index 100% rename from Reachability/Info.plist rename to Sources/Info.plist diff --git a/Reachability/Reachability.h b/Sources/Reachability.h similarity index 100% rename from Reachability/Reachability.h rename to Sources/Reachability.h diff --git a/Reachability/Reachability.swift b/Sources/Reachability.swift similarity index 95% rename from Reachability/Reachability.swift rename to Sources/Reachability.swift index 8914bda5..6b3bbfd8 100644 --- a/Reachability/Reachability.swift +++ b/Sources/Reachability.swift @@ -42,8 +42,7 @@ extension Notification.Name { public static let reachabilityChanged = Notification.Name("reachabilityChanged") } -func callback(reachability:SCNetworkReachability, flags: SCNetworkReachabilityFlags, info: UnsafeMutableRawPointer?) { - +func callback(reachability: SCNetworkReachability, flags: SCNetworkReachabilityFlags, info: UnsafeMutableRawPointer?) { guard let info = info else { return } let reachability = Unmanaged.fromOpaque(info).takeUnretainedValue() @@ -101,7 +100,6 @@ public class Reachability { } public var connection: Connection { - guard isReachableFlagSet else { return .none } // If we're reachable, but not on an iOS device (i.e. simulator), we must be on WiFi @@ -144,21 +142,21 @@ public class Reachability { fileprivate let reachabilityRef: SCNetworkReachability fileprivate let reachabilitySerialQueue = DispatchQueue(label: "uk.co.ashleymills.reachability") + + fileprivate var usingHostname = false - required public init(reachabilityRef: SCNetworkReachability) { + required public init(reachabilityRef: SCNetworkReachability, usingHostname: Bool = false) { allowsCellularConnection = true self.reachabilityRef = reachabilityRef + self.usingHostname = usingHostname } public convenience init?(hostname: String) { - guard let ref = SCNetworkReachabilityCreateWithName(nil, hostname) else { return nil } - - self.init(reachabilityRef: ref) + self.init(reachabilityRef: ref, usingHostname: true) } public convenience init?() { - var zeroAddress = sockaddr() zeroAddress.sa_len = UInt8(MemoryLayout.size) zeroAddress.sa_family = sa_family_t(AF_INET) @@ -177,7 +175,6 @@ public extension Reachability { // MARK: - *** Notifier methods *** func startNotifier() throws { - guard !notifierRunning else { return } var context = SCNetworkReachabilityContext(version: 0, info: nil, retain: nil, release: nil, copyDescription: nil) @@ -196,7 +193,7 @@ public extension Reachability { reachabilitySerialQueue.async { self.reachabilityChanged() } - + notifierRunning = true } @@ -210,7 +207,6 @@ public extension Reachability { // MARK: - *** Connection test methods *** @available(*, deprecated: 4.0, message: "Please use `connection != .none`") var isReachable: Bool { - guard isReachableFlagSet else { return false } if isConnectionRequiredAndTransientFlagSet { @@ -235,7 +231,6 @@ public extension Reachability { @available(*, deprecated: 4.0, message: "Please use `connection == .wifi`") var isReachableViaWiFi: Bool { - // Check we're reachable guard isReachableFlagSet else { return false } @@ -247,7 +242,6 @@ public extension Reachability { } var description: String { - let W = isRunningOnDevice ? (isOnWWANFlagSet ? "W" : "-") : "X" let R = isReachableFlagSet ? "R" : "-" let c = isConnectionRequiredFlagSet ? "c" : "-" @@ -263,13 +257,15 @@ public extension Reachability { } fileprivate extension Reachability { - func reachabilityChanged() { guard previousFlags != flags else { return } - + let block = connection != .none ? whenReachable : whenUnreachable DispatchQueue.main.async { + if self.usingHostname { + print("USING HOSTNAME ABOUT TO CALL BLOCK") + } block?(self) self.notificationCenter.post(name: .reachabilityChanged, object:self) } @@ -318,6 +314,7 @@ fileprivate extension Reachability { var flags: SCNetworkReachabilityFlags { var flags = SCNetworkReachabilityFlags() if SCNetworkReachabilityGetFlags(reachabilityRef, &flags) { + print("Returning flags \(flags)") return flags } else { return SCNetworkReachabilityFlags() diff --git a/ReachabilityTests/Info.plist b/Tests/Info.plist similarity index 100% rename from ReachabilityTests/Info.plist rename to Tests/Info.plist diff --git a/ReachabilityTests/ReachabilityTests.swift b/Tests/ReachabilityTests.swift similarity index 93% rename from ReachabilityTests/ReachabilityTests.swift rename to Tests/ReachabilityTests.swift index a807c2d9..70e4dcd7 100644 --- a/ReachabilityTests/ReachabilityTests.swift +++ b/Tests/ReachabilityTests.swift @@ -20,11 +20,6 @@ class ReachabilityTests: XCTestCase { } func testValidHost() { - - // Testing with an invalid host will initially show as UNreachable, but then the callback - // gets fired a second time reporting the host as reachable - - let validHostName = "google.com" guard let reachability = Reachability(hostname: validHostName) else { @@ -61,6 +56,9 @@ class ReachabilityTests: XCTestCase { } func testInvalidHost() { + // Testing with an invalid host will initially show as reachable, but then the callback + // gets fired a second time reporting the host as unreachable + let invalidHostName = "invalidhost" guard let reachability = Reachability(hostname: invalidHostName) else { @@ -93,5 +91,5 @@ class ReachabilityTests: XCTestCase { reachability.stopNotifier() } - + }