检查iPhone上的互联网连接并监视更改
我已在this answer之后实施了可达性类别。 我有两个不同的问题,我希望对你有所帮助......检查iPhone上的互联网连接并监视更改
我已经把通知我viewDidLoad中:
(void)viewDidLoad
{
[super viewDidLoad];
// check for internet connection
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil];
internetReachable = [Reachability reachabilityForInternetConnection];
[internetReachable startNotifier];
// check if a pathway to a random host exists
hostReachable = [Reachability reachabilityWithHostName: @"www.apple.com"];
[hostReachable startNotifier];
}
,我查一下我的viewDidAppear互联网连接:
(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
//check connection when access to the view
if (internetActive)
{
[self loadData];
}
else
{
UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@"Error loading content" message:@"Internet connection not available" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[errorAlert show];
}
}
第一个问题:如何检查互联网连接首次
我第一次ACC如果网络连接正常,则显示警报。我认为,这是因为通知程序尚未收到关于连接的通知。如何管理这个?
第二个问题:如果连接状态改变(即从不存在至今),通知并没有征询关于此
如果我开始没有互联网连接的应用程序,显示正确的警报。但是如果互联网再次可用,每次访问视图时都会继续显示警报,因为互联网可用性的更改不会被拦截。我认为这是由于在同一线程上执行通知程序。如何实现此连接检查以拦截连接状态更改?
在此先感谢和新年快乐, yassa
你suspission是正确的,这是非常usuall的viewDidLoad
和viewDidAppear
方法在同一运行循环中调用,这意味着您将不会收到任何viewDidAppear
之前的通知。
编辑
我不知道这是否会工作,因为我没有在这里的Xcode现在:
尝试使用[internetReachable currentReachabilityStatus]
和[hostReachable currentReachabilityStatus]
得到任何通知之前,检查当前状态。
如果你的代码仍然是一样的the answer you linked只需拨打[self checkNetworkStatus:nil]
在viewDidLoad
或viewDidAppear
检查internetActive
标志
非常感谢您的提示!改变' - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; //检查连接时访问视图 //如果(internetActive) 如果([internetReachable currentReachabilityStatus]){ ' 为我工作得很好! – yassassin 2012-01-01 12:39:34
之前,您应该看一看[可达没有吸(https://github.com/ nickpaulson/NPReachability)。 – samvermette 2011-12-31 19:14:55