Ios Internet可达性在iPhone中无法正常工作
我正在开发一个应用程序,它可以持续跟踪互联网连接并上传一些数据,该应用程序的功能是,当互联网不可用时,它会离线保存数据(照片),在互联网可用时,它会上传数据。我的应用程序工作正常,但有时它不会检查互联网,当我关闭设备wifi并再次打开时,它工作正常,所以有人能告诉我是什么问题让我卡住了吗?我的可达性代码如下: 代码Ios Internet可达性在iPhone中无法正常工作,ios,objective-c,iphone,reachability,Ios,Objective C,Iphone,Reachability,我正在开发一个应用程序,它可以持续跟踪互联网连接并上传一些数据,该应用程序的功能是,当互联网不可用时,它会离线保存数据(照片),在互联网可用时,它会上传数据。我的应用程序工作正常,但有时它不会检查互联网,当我关闭设备wifi并再次打开时,它工作正常,所以有人能告诉我是什么问题让我卡住了吗?我的可达性代码如下: 代码 - (void)reachabilityCheck { /* Internet checking */ [[NSNotificationCenter default
- (void)reachabilityCheck
{
/* Internet checking */
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
Reachability *reach = [Reachability reachabilityForInternetConnection];
reach.reachableOnWWAN = YES;
[reach startNotifier];
NetworkStatus internetStatus = [reach currentReachabilityStatus];
if (internetStatus != NotReachable) {
//Develop By Payal
if(self.internetConnection == 0)
{
NSLog(@"Connection active");
self.internetConnection = 1;
}
//Develop By Payal Done
}
else {
NSLog(@"Connection inactive");
self.internetConnection = 0;
}
}
试试这个代码
将下面的代码放入viewDidLoad
方法中
它调用即时使用通知
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(checkNetworkStatus:)
name:kReachabilityChangedNotification object:nil];
//Net Connection Chack
- (void)checkNetworkStatus:(NSNotification *)notice
{
// called after network status changes
NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
switch (internetStatus)
{
case NotReachable:
{
NSLog(@"The internet is down.");
UIAlertView *alrt=[[UIAlertView alloc]initWithTitle:@"Error" message:@"No Internet Connection\nPlease Check The Connection" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alrt show];
break;
}
case ReachableViaWiFi:
{
NSLog(@"The internet is working via WIFI");
break;
}
case ReachableViaWWAN:
{
NSLog(@"The internet is working via WWAN!");
break;
}
}
}
我希望这对你有用试试这段代码
将下面的代码放入viewDidLoad
方法中
它调用即时使用通知
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(checkNetworkStatus:)
name:kReachabilityChangedNotification object:nil];
//Net Connection Chack
- (void)checkNetworkStatus:(NSNotification *)notice
{
// called after network status changes
NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
switch (internetStatus)
{
case NotReachable:
{
NSLog(@"The internet is down.");
UIAlertView *alrt=[[UIAlertView alloc]initWithTitle:@"Error" message:@"No Internet Connection\nPlease Check The Connection" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alrt show];
break;
}
case ReachableViaWiFi:
{
NSLog(@"The internet is working via WIFI");
break;
}
case ReachableViaWWAN:
{
NSLog(@"The internet is working via WWAN!");
break;
}
}
}
我希望这对您有用代码的问题是您可能没有观察到任何连接更改 我不确定您在关闭和打开wifi连接时使用了什么触发器使代码正常工作 您可以使用Apple提供的
可达性
类,而不是使用计时器手动检查连接
您可以导入该类,然后在viewDidLoad(或appDelegate didFinishLaunchingWithOptions方法,如果需要全局观察者)中注册任何连接更改
编辑:您可以定义以下两个场景来测试代码
如果您想在场景2中实现您想要的(将媒体上载到服务器),那么可访问性更改并不是您需要的工具。代码的问题在于您可能没有观察到任何连接更改 我不确定您在关闭和打开wifi连接时使用了什么触发器使代码正常工作 您可以使用Apple提供的
可达性
类,而不是使用计时器手动检查连接
您可以导入该类,然后在viewDidLoad(或appDelegate didFinishLaunchingWithOptions方法,如果需要全局观察者)中注册任何连接更改
编辑:您可以定义以下两个场景来测试代码
如果你想在场景2中实现你想要的(将媒体上传到服务器),那么可达性更改并不是你需要的工具。你好,nikunj非常感谢你的快速回答,我只是注意到当我关闭并再次打开iPhone的wifi,然后上传数据时,那么,你能告诉我问题出在哪里吗?亲爱的,我必须把你的代码放在哪里?请帮助我,我从一周以来一直坚持这一点。我希望你能帮助我…:(您的代码已被弃用,此代码不能正常工作。如果我的代码正常工作,请投票并接受我的答案@jigarjims7ok brother,让我先试试。如果问题仍然存在,希望您能提供帮助。:)您好,同样的问题仍然存在。请帮助我,问题是当我第一次打开wifi时,上传不起作用,但当我刚刚关闭wifi并再次开始上传时。工作正常。我在appdelegate中使用了可达性,并在特定时间使用了一个计时器来检查互联网。我再次想解释我的情况是,当我上传时g y媒体在离线模式下,它保存在设备中,然后我从后台关闭应用程序并打开wifi,然后重新打开应用程序,所以现在互联网来了,但在这种情况下它不工作..你好,nikunj非常感谢你的快速回答,我只是注意到,当我关闭并再次打开iPhone的wifi时,然后上传数据工作,所以你可以亲爱的,请帮助我,我从一个星期以来一直坚持这一点。我希望你能帮助我…:(您的代码已被弃用,此代码不能正常工作。如果我的代码正常工作,请投票并接受我的答案@jigarjims7ok brother,让我先试试。如果问题仍然存在,希望您能提供帮助。:)您好,同样的问题仍然存在。请帮助我,问题是当我第一次打开wifi时,上传不起作用,但当我刚刚关闭wifi并再次开始上传时。工作正常。我在appdelegate中使用了可达性,并在特定时间使用了一个计时器来检查互联网。我再次想解释我的情况是,当我上传时g y媒体在脱机模式下,它保存在设备中,然后我从后台关闭应用程序并打开wifi,然后重新打开应用程序,所以现在互联网即将到来,但在这种情况下它不起作用。我在appdelegate中使用了可达性,并在特定时间使用计时器检查互联网。我想再次解释我的情况,当我在offlin中上载y媒体时e模式,它保存在设备中,然后我从后台关闭应用程序并打开wifi,然后重新打开应用程序,所以现在互联网即将到来,但在这种情况下,它不起作用。1.应用程序脱机->保存到设备2.你杀死应用程序3.你打开连接4.你重新打开应用程序。因为连接通知根本没有运行按这四个阶段,你的代码肯定无法工作。请尝试跳过第2步,并在不关闭你的应用程序的情况下打开连接。因此,如果我不想跳过第2步,该怎么办?正如我跳过第2步所知道的,我的代码