148iPhone: Checking Network Availability

Checking whether network is present and active.
By way of: http://70.40.216.232/forums/viewtopic.php?f=21&t=425

UIApplication-Network.h

 
//
//  UIApplication-Network.h
//
//  SystemConfiguration.framework will need to be added to your project
//
//  To use just call as a class function [UIApplication hasNetworkConnection]
//
 
#import <Foundation/Foundation.h>
#import <SystemConfiguration/SCNetworkReachability.h>
 
 
@interface UIApplication (NetworkExtensions)
 
+(BOOL)hasActiveWiFiConnection;     // fast wi-fi connection
+(BOOL)hasNetworkConnection;     // any type of internet connection (edge, 3g, wi-fi)
 
@end

UIApplication-Network.m

//
//  UIApplication-Network.m
//
 
#import "UIApplication-Network.h"
 
 
@implementation UIApplication (NetworkExtensions)
 
#define ReachableViaWiFiNetwork          2
#define ReachableDirectWWAN               (1 << 18)
// fast wi-fi connection
+(BOOL)hasActiveWiFiConnection
{
	SCNetworkReachabilityFlags     flags;
	SCNetworkReachabilityRef     reachabilityRef;
	BOOL                              gotFlags;
 
	reachabilityRef     = SCNetworkReachabilityCreateWithName(CFAllocatorGetDefault(), [@"www.apple.com" UTF8String]);
	gotFlags          = SCNetworkReachabilityGetFlags(reachabilityRef, &flags);
	CFRelease(reachabilityRef);
 
	if (!gotFlags)
	{
		return NO;
	}
 
	if( flags & ReachableDirectWWAN )
	{
		return NO;
	}
 
	if( flags & ReachableViaWiFiNetwork )
	{
		return YES;
	}
 
	return NO;
}
 
// any type of internet connection (edge, 3g, wi-fi)
+(BOOL)hasNetworkConnection;
{
    SCNetworkReachabilityFlags     flags;
    SCNetworkReachabilityRef     reachabilityRef;
    BOOL                              gotFlags;
 
    reachabilityRef     = SCNetworkReachabilityCreateWithName(CFAllocatorGetDefault(), [@"www.apple.com" UTF8String]);
    gotFlags          = SCNetworkReachabilityGetFlags(reachabilityRef, &flags);
    CFRelease(reachabilityRef);
 
    if (!gotFlags || (flags == 0) )
    {
        return NO;
    }
 
    return YES;
}
 
@end

Also, don’t forget to add the SystemConfiguration.framework to the Frameworks folder in your application.

In case you get errors like that:

"_SCNetworkReachabilityGetFlags", referenced from:
		      +[UIApplication(NetworkExtensions) hasActiveWiFiConnection] in UIApplication-Network.o
		      +[UIApplication(NetworkExtensions) hasNetworkConnection] in UIApplication-Network.o
		  "_SCNetworkReachabilityCreateWithName", referenced from:
		      +[UIApplication(NetworkExtensions) hasActiveWiFiConnection] in UIApplication-Network.o
		      +[UIApplication(NetworkExtensions) hasNetworkConnection] in UIApplication-Network.o
		ld: symbol(s) not found
		collect2: ld returned 1 exit status
Build failed (2 errors)

Picture 4