Apple의 Reachability 예제를 사용하는 데 너무 많은 정보가 있으며 많은 부분이 충돌합니다. 나는 그것을 아래에서 올바르게 (Reachability 2.0) 사용하고 있음을 알아 내려고하고있다. 내 앱의 사용 사례는 다음과 같습니다. 인터넷 연결이 어떤 수단 (예 : wifi, LAN, Edge, 3G 등)을 통해 가능하면 다양한보기에서 UIButton ("자세히보기")을 볼 수 있습니다. 연결이 없으면 버튼이 표시되지 않습니다. "더보기"부분은 앱에 어떤 식 으로든 중요하지 않습니다. 단지 부가 기능입니다. "더보기"는 연결이 설정되거나 끊어짐에 따라 응용 프로그램 수명주기 동안 언제든지 표시되거나 표시되지 않을 수 있습니다. 여기 내가 어떻게 해냈는지 -이게 맞습니까? 더 좋은 방법이 있습니까?도달 가능성 (2.0) 사용 사례 확인
도움이 많이 감사드립니다! 왜 rootViewController.bConnection = (netStatus != NotReachable);
LQ
// AppDelegate.h
#import "RootViewController.h"
@class Reachability;
@interface AppDelegate : NSObject <UIApplicationDelegate>
{
UIWindow *window;
UINavigationController *navigationController;
RootViewController *rootViewController;
Reachability* hostReach;
// NOT USED: Reachability* internetReach;
// NOT USED: Reachability* wifiReach;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
@property (nonatomic, retain) IBOutlet RootViewController *rootViewController;
@end
// AppDelegate.m
#import "AppDelegate.h"
#import "Reachability.h"
#define kHostName @"www.somewebsite.com"
@implementation AppDelegate
@synthesize window;
@synthesize navigationController;
@synthesize rootViewController;
- (void) updateInterfaceWithReachability: (Reachability*) curReach {
if(curReach == hostReach) {
NetworkStatus netStatus = [curReach currentReachabilityStatus];
BOOL connectionRequired = [curReach connectionRequired];
// Set a Reachability BOOL value flag in rootViewController
// to be referenced when opening various views
if ((netStatus != ReachableViaWiFi) && (netStatus != ReachableViaWWAN)) {
rootViewController.bConnection = (BOOL *)0;
} else {
rootViewController.bConnection = (BOOL *)1;
}
}
}
- (void) reachabilityChanged: (NSNotification*)note {
Reachability* curReach = [note object];
NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
[self updateInterfaceWithReachability: curReach];
}
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// NOTE: #DEFINE in Reachability.h:
// #define kReachabilityChangedNotification @"kNetworkReachabilityChangedNotification"
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];
hostReach = [[Reachability reachabilityWithHostName: kHostName] retain];
[hostReach startNotifer];
[self updateInterfaceWithReachability: hostReach];
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];
}
- (void)dealloc {
[navigationController release];
[rootViewController release];
[window release];
[super dealloc];
}
@end