{
  "name": "VCLReachability",
  "version": "1.2.0",
  "summary": "VCLReachability is a network reachability library for iOS. It is designed to help you interface with network activity.",
  "description": "                       # VCLReachability\n\n                      VCLReachability is a reachability library for iOS. It is designed to help you interface with network activity events by allowing all objects to publish and subscribe to reachability events. \n\n                      Based on Apples [Reachability](https://developer.apple.com/Library/ios/samplecode/Reachability/Introduction/Intro.html) project.\n\n                      ### Supported iOS SDK Versions\n\n                      * Supported build target - iOS 7.0\n\n                      ### ARC Compatibility\n\n                      VCLReachability works both with ARC.\n\n                      ## Table of contents\n\n                      - [Quick start](#quick-start)\n                      - [ChangeLog](#changelog)\n                      - [Documentation](#documentation)\n                      - [Bugs and feature requests](#bugs-and-feature-requests)\n                      - [Contributing](#contributing)\n                      - [Community](#community)\n                      - [Versioning](#versioning)\n                      - [Authors](#authors)\n                      - [License](#license)\n\n                      ## Quick start\n\n                      Four quick start options are available:\n\n                      - [Download the latest release](https://github.com/VerticodeLabs/VCLReachability/releases) and add the source from `Classes` to your project.\n\n                      - Clone the repo and use the example project: \n                      ```bash\n                      git@github.com:VerticodeLabs/VCLReachability.git\n                      ```\n\n                      - Install with [Cocoapods](http://cocoapods.org/) by adding VCLReachability to your Podfile.\n                      ```bash\n                      pod `VCLReachability`\n                      ```\n\n                      ### What's included\n\n                      Within the download you'll find the following files, providing both compiled and minified variations:\n\n                      ```\n                      Classes/\n                      └── ios/\n                          ├── NSObject+VCLReachabilitySubscriber.h\n                          └── NSObject+VCLReachabilitySubscriber.m\n                          └── VCLReachability.h\n                          └── VCLReachability.m\n                          └── VCLReachability.h\n                      Examples/\n                      ├── ...\n                      Tests/\n                      ├── ...\n                      VCLReachability.xcodeproj/\n                      ├── ...\n\n                      ```\n\n                      ### Sample Usage\n\n                      IMPORTANT: VCLReachability must use DNS to resolve the host name before it can determine the VCLReachability of that host, and this may take time on certain network connections.  Because of this, the API will return NotReachable until name resolution has completed.  This delay may be visible in the interface on some networks.\n\n                      The VCLReachability sample demonstrates the asynchronous use of the SCNetworkReachability API. You can use the API synchronously, but do not issue a synchronous check by hostName on the main thread. If the device cannot reach a DNS server or is on a slow network, a synchronous call to the SCNetworkReachabilityGetFlags function can block for up to 30 seconds trying to resolve the hostName. If this happens on the main thread, the application watchdog will kill the application after 20 seconds of inactivity.\n\n                      SCNetworkReachability API's do not currently provide a means to detect support for GameKit peer-to-peer networking over Bluetooth.\n\n                      #### Using the VCLReachabilitySubscriber Protocol\n\n                      Add `VCLReachabilitySubscriber.h` to the class you which to become a reachability subscriber.\n\n                      ```objective-c\n                      #import \"VCLReachabilitySubscriber.h\"\n                      ```\n                      Implement the protocol method\n\n                      ```objective-c\n                      - (void)reachabilityChanged:(NSNotification *)note{...}\n                      - (void)wifiReachabilityChanged:(NSNotification *)note{...}\n                      - (void)internetReachabilityChanged:(NSNotification *)note{...}\n                      - (void)hostNameReachabilityChanged:(NSNotification *)note{...}\n                      ```\n\n                      For example....\n\n                      ```objective-c\n                      - (void)reachabilityChanged:(NSNotification *)note\n                      {\n                          VCLReachability* curReach = [note object];\n                          NSParameterAssert([curReach isKindOfClass:[VCLReachability class]]);\n                          \n                          [(id<VCLReachabilitySubscriber>)self updateWithReachability:curReach forType:nil];\n                      }\n                      ```\n\n                      #### Using the VCLReachability Category\n\n                      Add `NSObject+VCLReachabilitySubscriber.h` to the class you which to become a reachability subscriber.\n\n                      ```objective-c\n                      #import \"NSObject+VCLReachabilitySubscriber.h\"\n                      ```\n\n                      The VCLReachabilitySubscriber protocol methods will aready be filled in. By default every subscriber will execute `- (void)updateWithReachability:(VCLReachability *)reachability forType:(NSString*)type;` unless the other optional protocol methods are defined. Be sure to define `updateWithReachability` in your subscriber.\n\n                      #### Subscribe to Network Events\n\n                      The following methods are used to subscribe to differente reachability events.\n\n                      ```objective-c\n                      /*!\n                       * Subscribe change it network events\n                       */\n                      + (void)subscribeToReachabilityNotificationsWithDelegate:(id<VCLReachabilitySubscriber>) delegate;\n                      + (void)subscribeToReachabilityForWifiWithDelegate:(id<VCLReachabilitySubscriber>) delegate;\n                      + (void)subscribeToReachabilityForHostNameWithName:(NSString *)hostName delegate:(id<VCLReachabilitySubscriber>) delegate;\n                      + (void)subscribeToReachabilityForInternetConnectionWithDelegate:(id<VCLReachabilitySubscriber>) delegate;\n                      ```\n\n                      For example...\n\n                      ```objective-c\n                      - (void)viewDidLoad\n                      {  \n                          [VCLReachability subscribeToReachabilityForHostNameWithName:@\"google.com\" delegate:self];\n                          [VCLReachability subscribeToReachabilityForInternetConnectionWithDelegate:self];\n                          [VCLReachability subscribeToReachabilityForWifiWithDelegate:self];\n                      }\n                      ```\n                      **NOTE**\n                      Make sure you unsubscribe your delegates before they go bad by using the VCLReachability classes unsubscribe methods. I suggest that you do this within `dealloc`.\n\n                      ## ChangeLog\n                      Refer to the [releases](https://github.com/VerticodeLabs/VCLReachability/releases) section for a detailed ChangeLog\n\n                      <!-- ## Documentation\n\n                      Refer to [vclreachability.readthedocs.org](http://vclreachability.readthedocs.org/en/latest/) for detailed API documentation. -->\n\n                      ## Bugs and feature requests\n\n                      Have a bug or a feature request? Please first read the [issue guidelines](<CONTRIBUTING class=\"md\"></CONTRIBUTING>#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/VerticodeLabs/VCLReachability/issues/new).\n\n                      ## Contributing\n\n                      Please read through our [contributing guidelines](CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.\n\n                      More over, if your pull request contains patches or features, you must include relevant unit tests.\n\n                      ## Community\n\n                      Keep track of development and updates.\n\n                      - Follow [@adrianmaurer](http://twitter.com/adrianmaurer) & [@VerticodeLabs](http://twitter.com/verticodelabs) on Twitter.\n                      - Tweet [@VerticodeLabs](http://twitter.com/verticodelabs) with any questions/personal support requests.\n                      - Read and subscribe to [my site](http://verticodelabs.com).\n\n                      ## Versioning\n\n                      For transparency into our release cycle and in striving to maintain backward compatibility, this project is maintained under the Semantic Versioning guidelines. Sometimes we screw up, but we'll adhere to these rules whenever possible.\n\n                      Releases will be numbered with the following format:\n\n                      `<major>.<minor>.<patch>`\n\n                      And constructed with the following guidelines:\n\n                      - Breaking backward compatibility **bumps the major** while resetting minor and patch\n                      - New additions without breaking backward compatibility **bumps the minor** while resetting the patch\n                      - Bug fixes and misc changes **bumps only the patch**\n\n                      For more information on SemVer, please visit <http://semver.org/>.\n\n                      ## Authors\n\n                      **Adrian Maurer**\n\n                      - Twitter: [@adrianmaurer](http://twitter.com/adrianmaurer)\n                      - Website: [verticodelabs.com](http://verticodelabs.com)\n\n                      ## License\n\n                      Licensed under [the MIT license](LICENSE).\n\n",
  "homepage": "https://github.com/VerticodeLabs/VCLReachability",
  "documentation_url": "https://github.com/VerticodeLabs/VCLReachability/blob/master/README.md",
  "license": "MIT",
  "authors": {
    "adrianmaurer": "adrian@verticodelabs.com"
  },
  "source": {
    "git": "https://github.com/VerticodeLabs/VCLReachability.git",
    "tag": "1.2.0"
  },
  "social_media_url": "https://twitter.com/verticodelabs",
  "platforms": {
    "ios": "7.0"
  },
  "requires_arc": true,
  "source_files": "Classes/**/*.{h,m}",
  "ios": {
    "exclude_files": "Classes/osx"
  },
  "osx": {
    "exclude_files": "Classes/ios"
  }
}
