iPhoneテストネットワークリンク


携帯電話がネットワークにリンクされているかどうか、またはリンクされているネットワークのタイプを知る必要がある場合があります..次のことができます.
(一)ネットワークをリンクするかどうか:
SystemConfigurationをインポートする必要がある.framework
#import #import
// internet   , sockaddr_in sockaddr 。
    struct sockaddr_in zeroAddress;
    // zeroAddress 
	bzero(&zeroAddress, sizeof(zeroAddress));
	zeroAddress.sin_len = sizeof(zeroAddress);
	zeroAddress.sin_family = AF_INET; // 
    
    //    ip 
	SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
    // 
	SCNetworkReachabilityFlags flags;
	
    // 
    
	BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
	CFRelease(defaultRouteReachability);
	
	if (!didRetrieveFlags) {
		printf("Error. Count not recover network reachability flags
"); } // BOOL isReachable = flags & kSCNetworkFlagsReachable; BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired; NSString *result; if ((isReachable && !needsConnection) ? YES : NO) { result = @"Connection Successed!!!"; }else { result = @"Connection Faild!!!"; } UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"TestConnection" message:result delegate:self cancelButtonTitle:@"OK,I Know" otherButtonTitles:nil]; [alert show];

(二)ネットワークリンクのタイプ:
NSString *connectionKind;
    //  
    Reachability *hostReach = [Reachability reachabilityWithHostName:@"www.baidu.com"];
	//  
    switch ([hostReach currentReachabilityStatus]) {
		case NotReachable:
			connectionKind = @" ";
			break;
		case ReachableViaWiFi:
			connectionKind = @" WIFI";
			break;
		case ReachableViaWWAN:
			connectionKind = @" WWAN(3G)";
			break;
		default:
			break;
	}
	
	UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@" " 
                                                    message:connectionKind
												   delegate:self
										  cancelButtonTitle:@" , " 
                                          otherButtonTitles:nil];
	[alert show];

基本的な需要はすでに満足しています...
いいアドバイスがあったら返事してほしい...