Giter Club home page Giter Club logo

mknetworkkit-swift's Introduction

MKNetworkKit

An simple, elegant and easy to use networking framework in Swift 3.0

Build Status Carthage compatible Twitter GitHub license Supported Platforms Gitter


This is version 3.0 of MKNetworkKit. Version 3 is a complete rewrite loosely based on version 2 that was released in October 2015.

###Why MKNetworkKit? Actually, you don't need a networking framework today (post iOS 7). We live in the era of URLSession and with networking becoming a core feature of every app, you need to know how to write a good networking stack without using a third party library.

Now, you may ask, So, why are there so many networking frameworks? Almost every iOS developer I know uses one or the other networking library.

Well, that's because, when iOS was introduced, the two frameworks built into the iPhone (iOS) SDK, namely, CFNetwork.framework and NSURLConnection(Foundation.framework) were complicated to understand and use. Though NSURLConnection was easier than CFNetwork it still wasn't easy enough for most developers.

With iOS 7, Apple introduced NSURLSession based networking that blew everything out of water.

Using URLSession is super easy to use. Most of today's third party networking frameworks that exist today are built on top of URLSession. With deprecation of NSURLConnection in iOS 9 (tvOS 9.0 marks NSURLConnection as unavailable), you don't even need to know the "basics" like NSURLConnection. In fact, URLSession is the new "basics". URLSession is the class that you should learn, if you are doing networking today.

In my opinion, the only benefits of using a networking framework instead of URLSession are

  1. Easier Authentication (www-authenticatebased and client certificate/server trust based) Authentication with NSURLSession still requires delegate handling like NSURLConnection

  2. Multi-part form upload

In addition to the above, MKNetworkKit has the following features.

  • Queued Requests (Batch a bunch of requests and get notified once they are done)
  • High performance background caching (based on HTTP 1.1 caching specs) built in
  • Fetching remote images are done using extension methods in strings. Just call the loadRemoteImage method on any URL String and get the image in the completion handler. What's more? All these fetched images are automatically cached and you don't need a separate image caching library.
  • Auto network indicator support MKNetworkKit manages the display of status bar network indicator for you. (on iOS only)
  • cURL-able debug lines
  • Fully compatible with application extensions
  • Background image decompression
  • Background completion
  • Full support for NSStreams

###Installation

Manual

  1. Add this repository as a submodule in your project.
  2. Drag the Core directory into your project.
  3. Link your project against SystemConfiguration.framework if you haven't already

Carthage

To integrate MKNetworkKit into your Xcode project using Carthage, specify it in your Cartfile:

github "MugunthKumar/MKNetworkKit-Swift" "master"

Run carthage update to build the framework and drag the built MKNetworkKit.framework into your Xcode project.

Version 1 of this release is available as a tag here for Cocoapods users.

###How to use Documentation will soon be available on the wiki page

###Licensing MKNetworkKit is licensed under MIT License. Attribution free licensing is available for a small license fee. Get an attribution free license from our license store

mknetworkkit-swift's People

Contributors

gitter-badger avatar mugunthkumar avatar rbenjamin avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.