私のサーバーipで使用するappleの到達可能性クラスを変更しました。しかし、reachabilityWithAddress
を使用すると、アプリの起動中にreachabilityChanged
と呼ばれることはありません。それはインターネット接続状態のみが変更されたと呼ばれています。 (wi-fiをオンにするなど)ただし、reachabilityWithHostName
を使用した場合、reachabilityChanged
は、アプリケーションの起動時に呼び出される関数です。Reachability Class with IP
私には何が欠けていますか?
方法で次に- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
///////////////////////////////////////////////////////////////////////////////////
// Reachability Local Notifications
///////////////////////////////////////////////////////////////////////////////////
hasInternetConnection = NO;
struct sockaddr_in address;
address.sin_len = sizeof(address);
address.sin_family = AF_INET;
address.sin_port = htons(80);
address.sin_addr.s_addr = inet_addr("X.X.X.X");
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name:kReachabilityChangedNotification object: nil];
hostReach = [Reachability reachabilityWithAddress:&address];
[hostReach startNotifier];
...
}
:
-(void)reachabilityChanged:(NSNotification*)note
{
Reachability* curReach = [note object];
NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
if (curReach == hostReach) {
NetworkStatus netStatus = [curReach currentReachabilityStatus];
if (netStatus != ReachableViaWiFi && netStatus != ReachableViaWWAN) {
hasInternetConnection = NO;
}
else {
hasInternetConnection = YES;
}
}
else {
DLog(@"Something go wrong!");
}
}