当前位置:  开发笔记 > 编程语言 > 正文

确定iPhone互联网连接是否可用的最简单方法?

如何解决《确定iPhone互联网连接是否可用的最简单方法?》经验,为你挑选了4个好方法。

我想确定iPhone上是否有互联网连接.对于应用程序来说无论是wifi还是EDGE或其他什么都无关紧要.

使用SeismicXML示例中的代码似乎不起作用,Apple的Reachability示例代码似乎对应用程序来说太过分了......

有没有一种快速简便的方法来确定iPhone上的网络可用性?

谢谢,本



1> 小智..:

遵循以下3个简单步骤 -

第1步:在项目中包含"SystemConfiguration.framework"框架

第2步:从可达性示例中包含Apple的Reachability.h和Reachability.m

第3步:现在将此代码添加到.m中的任何位置.

Reachability* wifiReach = [[Reachability reachabilityWithHostName: @"www.apple.com"] retain];
NetworkStatus netStatus = [wifiReach currentReachabilityStatus];

switch (netStatus)
{
    case NotReachable:
    {
        NSLog(@"Access Not Available");
        break;
    }

    case ReachableViaWWAN:
    {
        NSLog(@"Reachable WWAN");
        break;
    }
    case ReachableViaWiFi:
    {
        NSLog(@"Reachable WiFi");
        break;
    }
}


^除了可达性之外,为不同目的提供了不同的方法:使用reachabilityWithHostName:@"your.hostname"来检查您是否可以访问自己的服务器.使用reachabilityForInternetConnection检查是否存在Internet连接; 后者似乎更接近原来的问题.我不会检查第三方服务器,例如Apple.com - 这是一个黑客.

2> Jane Sales..:

我从他们的Reachability示例中加入了Apple的Reachability.h和.m,再加上上面提到的SystemConfiguration框架,然后将以下代码添加到我的应用程序中,这比上面的答案有两个优点 - 它为您提供了更多信息,并且您获得了异步网络状态更改通知.

在您的app delegate或类似代码中,在启动时添加:

[self startReachability];

然后添加此方法,在网络更改时调用该方法:

#pragma mark Reachability changed
- (void)reachabilityChanged:(NSNotification*)aNote
{
self.remoteHostStatus = [[Reachability sharedReachability] remoteHostStatus];

switch (self.remoteHostStatus)
{
case NotReachable:
  debugForComponent(kDebugMaskApp,@"Status changed - host not reachable");
  break;

case ReachableViaCarrierDataNetwork:
  debugForComponent(kDebugMaskApp,@"Status changed - host reachable via carrier");
  break;

case ReachableViaWiFiNetwork:
  debugForComponent(kDebugMaskApp,@"Status changed - host reachable via wifi");     
  break;

default:
  debugForComponent(kDebugMaskApp,@"Status changed - some new network status");
  break;
}
}


`[self startReachability]` - 这个方法定义在哪里?

3> user21293..:

一旦尝试复制SystemConfiguration.framework,我在破解XCode之后想出来......这是对任何可能感兴趣的人的解决方案......

将SystemConfiguration.framework添加到项目中,执行#import ,然后添加以下代码:

SCNetworkReachabilityFlags flags;
BOOL receivedFlags;

SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(CFAllocatorGetDefault(), [@"google.com" UTF8String]);
receivedFlags = SCNetworkReachabilityGetFlags(reachability, &flags);
CFRelease(reachability);

if (!receivedFlags || (flags == 0) )
{
    // internet not available
} else {
    // internet available
} 

嗯,希望这对任何人都有帮助...似乎是让应用被拒绝的常见方式......



4> Thys..:

链接到可达性示例;
http://developer.apple.com/iphone/library/samplecode/Reachability/index.html

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有