我在使用Reachability时遇到了困难。我想通过在启动时初始化观察者并只接收变化通知来保持简单。在下面的代码中,reachabilityChanged方法从未被调用。我已经尝试过许多迭代,但这是最简单的版本。它可以编译和运行。请帮忙...
* AppDelegate.h 代码 *
* AppDelegate.h 代码 *
#import <UIKit/UIKit.h>
#ifdef PHONEGAP_FRAMEWORK
#import <PhoneGap/PGViewController.h>
#import <PhoneGap/PGURLProtocol.h>
#import <PhoneGap/Reachability.h>
#else
#import "PGViewController.h"
#import "PGURLProtocol.h"
#import "Reachability.h"
#endif
@interface AppDelegate : NSObject < UIApplicationDelegate, UIWebViewDelegate, PGCommandDelegate> {
NSString* invokeString;
}
@property (nonatomic, copy) NSString* invokeString;
@property (nonatomic, strong) IBOutlet UIWindow* window;
@property (nonatomic, strong) IBOutlet PGViewController* viewController;
@end
**** AppDelegate.m 代码片段 ****
#import "AppDelegate.h"
#import "MainViewController.h"
#ifdef PHONEGAP_FRAMEWORK
#import <PhoneGap/PGPlugin.h>
#import <PhoneGap/PGURLProtocol.h>
#import <PhoneGap/Reachability.h>
#else
#import "PGPlugin.h"
#import "PGURLProtocol.h"
#import "Reachability.h"
#endif
@implementation AppDelegate
@synthesize invokeString, window, viewController;
- (void) reachabilityChanged:(NSNotification *)notice
{
NSLog(@"???????? CODE NEVER GETS HERE ??????????");
Reachability *reach = [notice object];
NSParameterAssert([reach isKindOfClass: [Reachability class]]);
NetworkStatus remoteHostStatus = [reach currentReachabilityStatus];
if(remoteHostStatus == NotReachable) {NSLog(@"**** Not Reachable ****");}
else if (remoteHostStatus == ReachableViaWiFi) {NSLog(@"**** wifi ****"); }
else if (remoteHostStatus == ReachableViaWWAN) {NSLog(@"**** cell ****"); }
}
- (BOOL) application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
Reachability *reach = [Reachability reachabilityForInternetConnection];
[reach startNotifier];
NetworkStatus remoteHostStatus = [reach currentReachabilityStatus];
NSLog(@”???? ALWAYS INITS WITH Not Reachable ????”);
if(remoteHostStatus == NotReachable) {NSLog(@"init **** Not Reachable ****");}
else if (remoteHostStatus == ReachableViaWiFi) {NSLog(@"int **** wifi ****"); }
else if (remoteHostStatus == ReachableViaWWAN) {NSLog(@"init **** cell ****"); }
// ...
}
@end