Carthage is an alternative dependency manager to CocoaPods. Unlike the Objective-C based CocoaPods, Carthage is developed in Swift. The tutorial below shows how to use Carthage to install reachability.swift and receive network reachability notifications.
1. Install Homebrew with this command:
If Homebrew has already been installed, you'll see this:
2. Type this command in the terminal:
brew update
===== If you have no error, go to step 3. =====
You might see error like this:
warning: unable to unlink CONTRIBUTING.md: Permission denied
warning: unable to unlink SUPPORTERS.md: Permission denied
fatal: cannot create directory at '.github': Permission denied
Error: Failure while executing: git pull --ff --no-rebase --quiet origin refs/heads/master:refs/remotes/origin/master
If you see the above message, type this command:
sudo chown -R username:admin $(brew --prefix)
Then type:
git fetch --all
If this error happens:
fatal: Not a git repository (or any of the parent directories): .git
Type this:
git init
Then try git fetch --all again and type this:
git reset --hard && git clean -df
Then enter these commands:
brew doctor
brew updateReference: homebrew not working on OSX
===== End of Step 2 Error Section =====
3. Type this command in the terminal:
brew install carthage
4. Check the version of Carthage with:
carthage version
Note: To update the carthage version, use this command:
brew upgrade carthage
5. Create a new Xcode project.
6. Go to the Xcode directory in the terminal and create an empty Cartfile with this command:
touch Cartfile
7. Open the Cartfile with Xcode using this command:
open Cartfile -a Xcode
8. Add this line to the Cartfile:
github "ashleymills/Reachability.swift"
Press [command] + [S] keys to save the Cartfile.
9. Go back to the terminal. Type:
carthage update
You should see message like this:
10. Open the Carthage folder in Finder with this terminal command:
open Carthage
Move to Carthage/Build/iOS/ in Finder.
11.  Select ProjectName -> Targets -> General -> Linked Frameworks and Libraries in Xcode. 
12. Drag Reachability.framework from Finder to Xcode.
12. Drag Reachability.framework from Finder to Xcode.
13. Select ProjectName -> Targets -> Build Phases -> + sign -> New Run Script Phase.
14. Select Run Script. Add this command:
Select Input Files and add this line:
$(SRCROOT)/Carthage/Build/iOS/Reachability.framework
Build the code now and it should work.
15. Modify ViewController.swift in Swift 2.2 with Xcode 7.3 as below:
    
    
        
        
    
        
        
14. Select Run Script. Add this command:
/usr/local/bin/carthage copy-frameworks
Select Input Files and add this line:
$(SRCROOT)/Carthage/Build/iOS/Reachability.framework
15. Modify ViewController.swift in Swift 2.2 with Xcode 7.3 as below:
import UIKit
import Reachability
class ViewController: UIViewController {
    var reachability: Reachability?
    override func viewWillAppear(animated: Bool) {
        do {
            reachability = try Reachability.reachabilityForInternetConnection()
        } catch {
            print("Unable to create Reachability")
            return
        }
        NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(reachabilityChanged(_:)), name: ReachabilityChangedNotification, object: reachability)
        do {
            try reachability?.startNotifier()
        } catch {
            print("could not start reachability notifier")
        }
    }
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    func reachabilityChanged(notification: NSNotification) {
        let reachable = notification.object as! Reachability
        if reachable.isReachable() {
            if reachable.isReachableViaWiFi() {
                print("WiFi")
            } else {
                print("Cellular")
            }
        } else {
            print("No Network")
        }
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}
Result:
WiFi
Cellular
No Network
Cellular
WiFi
Result:
WiFi
Cellular
No Network
Cellular
WiFi
Related Information:









 
No comments:
Post a Comment