标签: reachability

即使无线可用,SCNetworkReachabilityGetFlags也会返回0

我有一个使用Apples可访问性代码的应用程序.当我退出应用程序时,打开飞行模式,返回到应用程序,我正确地收到一条消息,指出没有可用的连接.如果我回去关闭飞行模式并返回应用程序,我仍然得到没有连接可用的消息.具体问题代码是这样的:

NetworkStatus status = kNotReachable;
if (SCNetworkReachabilityGetFlags(reachabilityRef, &flags))
{
    status = [self networkStatusForFlags: flags];
    return status;
}
Run Code Online (Sandbox Code Playgroud)

我进入if语句,标志最终为0(kSCNetworkReachabilityFlagsTransientConnection).这究竟是什么意思?有没有人经历过这个,有没有人知道解决方法或修复?几个小时一直在玩它......

iphone networking reachability

4
推荐指数
1
解决办法
5032
查看次数

可与地址连接 - 服务器和端口 - iOS 5

我正在尝试检查服务器是在线还是离线:我遇到连接到它时有端口的问题

我的代码目前:

struct sockaddr_in address;
address.sin_len = sizeof(address);
address.sin_family = AF_INET;
address.sin_port = htons(25667);
address.sin_addr.s_addr = inet_addr("fr7.mooshroom.net");

Reachability *reachability = [Reachability reachabilityWithAddress:&address];
Run Code Online (Sandbox Code Playgroud)

请让我知道我做错了什么.请不要把我与其他问题联系起来,我已经搜索过了,没有人能找到我正在寻找的东西.

iphone ping objective-c reachability

4
推荐指数
1
解决办法
3192
查看次数

在应用程序启动过程中iOS测试连接到服务器太长时间

我有一个允许用户自动登录的应用程序.我的老板想要的是,当应用程序启动时,应用程序需要测试与我们服务器的连接(而不仅仅是测试是否有WiFi或3G网络).我借用了苹果的Reachability样本,它有效.

问题是需要太长时间,特别是在发布时.我在没有互联网连接的本地无线网络上尝试过,我花了将近半分钟的时间.因为自动登录在-ViewDidLoad()中调用了半分钟,所以ui没有加载.花费很长时间的时间是完全不可接受的.更糟糕的是,如果我的应用程序加载时间太长,iOS甚至可能会关闭应用程序.

此外,我的应用程序中有很多Web服务调用.我理解每个网络服务电话都有可能失败,因为即使用户从一个地方走到另一个地方,iPhone/iPad也可能很容易丢失或获得连接.我个人不喜欢它,但这就是我的老板要我做的事情,我可能不得不经常在应用程序中测试连接.

所以我在这里寻找的是一种非常快速(几秒钟内)检测连接的方法,或者是在幕后进行连接而不影响用户体验的方法.

有人有建议吗?

感谢您抽出宝贵时间阅读我的问题.

iphone networking reachability ipad ios

4
推荐指数
2
解决办法
4807
查看次数

AFNetworking 2.0可达性不起作用

我在使AFNetworking Reachability模块工作时遇到了一些麻烦.我已经使用ReachabilityStatusChangeBlock设置了AFHTTPRequestOperationManager,但它永远不会被调用.

self.manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:@"http://192.168.1.2:3000"]];
    self.manager.responseSerializer = [AFJSONResponseSerializer serializer];
    NSOperationQueue *operationQueue = self.manager.operationQueue;
    [self.manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        switch (status) {
            case AFNetworkReachabilityStatusNotReachable:
            // we need to notify a delegete when internet conexion is lost.
            // [delegate internetConexionLost];
                NSLog(@"No Internet Conexion");
            break;
            case AFNetworkReachabilityStatusReachableViaWiFi:
                NSLog(@"WIFI");
            break;
            case AFNetworkReachabilityStatusReachableViaWWAN:
                NSLog(@"3G");
            break;
          default:
            NSLog(@"Unkown network status");
            [operationQueue setSuspended:YES];
            break;
        }
Run Code Online (Sandbox Code Playgroud)

我已经在我的.pch中导入了SystemConfiguration/SystemConfiguration.h,正如文档所述.每当我要求状态时,我得到值-1.

有帮助吗?

更新:

我在这里添加我的PodFile:

pod 'AFNetworking'              ,'~> 2.0.0'
pod 'AFNetworking/Reachability' ,'~> 2.0.0'
Run Code Online (Sandbox Code Playgroud)

objective-c reachability ios7 afnetworking-2

4
推荐指数
1
解决办法
7268
查看次数

Unity检查互联网连接可用性

我正在将我们的游戏移植到Unity,并需要一些有关Unity中互联网连接检查的帮助.官方Unity文档说'不要使用Application.internetReachability.所以我很困惑哪些代码可以在这里工作.在任何论坛中都找不到任何突出的解决方案.我想检查Wi-Fi或GPRS是否开启哪个应该适用于iOS和Android.提前致谢.

unity-game-engine reachability ios

4
推荐指数
1
解决办法
2万
查看次数

iOS中的蜂窝网络的可达性返回False - Swift

我有这个代码用于检查互联网连接,它工作得非常好,直到我更新到Xcode 8和swift 3.现在它对于蜂窝网络返回false,对于WiFi网络则为真,我不知道为什么.

这是代码:

open class Reachability { 

class func isConnectedToNetwork() -> Bool {

    var zeroAddress = sockaddr_in(sin_len: 0, sin_family: 0, sin_port: 0, sin_addr: in_addr(s_addr: 0), sin_zero: (0, 0, 0, 0, 0, 0, 0, 0))
    zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress))
    zeroAddress.sin_family = sa_family_t(AF_INET)

    let defaultRouteReachability = withUnsafePointer(to: &zeroAddress) {
        $0.withMemoryRebound(to: sockaddr.self, capacity: 1) {zeroSockAddress in
            SCNetworkReachabilityCreateWithAddress(nil, zeroSockAddress)
        }
    }
    var flags: SCNetworkReachabilityFlags = SCNetworkReachabilityFlags(rawValue: 0)
    if SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) == false {
        return false
    }

    let isReachable = flags == .reachable
    let …
Run Code Online (Sandbox Code Playgroud)

iphone reachability ios swift

4
推荐指数
2
解决办法
1196
查看次数

如何检测 iOS 用户是否连接到蜂窝网络或 Wi-Fi?

我需要区分连接到蜂窝网络和 WiFi 的 iPhone/iPad 用户。在SCNetworkReachabilityFlag .isWWAN下,Apple 表示:

The absence of this flag does not necessarily mean that a connection will never pass over a cellular network. If you need to robustly prevent cellular networking, read Avoiding Common Networking Mistakes in Networking Overview.

这意味着,如果启用此标志,则用户很可能通过蜂窝网络进行连接,但不能保证。我读过《避免常见的网络错误》,但这没有帮助。

我如何才能 100% 确定用户在(或不在)蜂窝网络上?

我的代码如下所示:

let reachability = SCNetworkReachabilityCreateWithName(nil, "localhost")
var flags = SCNetworkReachabilityFlags()
if let reachability = reachability {
    SCNetworkReachabilityGetFlags(reachability, &flags)
}
let isConnectedToCellular = flags.contains(.isWWAN)
Run Code Online (Sandbox Code Playgroud)

编辑:

如果您使用此代码,请确保在后台线程而不是主线程上调用它。

reachability ios swift

4
推荐指数
1
解决办法
4402
查看次数

使用Reachability检查远程主机的可用性是否明智?

使用Reachability Class(来自Apple)检查远程主机的可用性是否明智?例如,www.google.com

或者我应该使用

NSString *connectedString = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com/"]]; 

if ([connectedString length] != 0) // Host Available
Run Code Online (Sandbox Code Playgroud)

这是最好的选择,因为我听说Reachability有检查主机可用性的错误

iphone reachability

3
推荐指数
1
解决办法
5182
查看次数

IP地址更改通知

我正在使用Reachability类来检测wifi可用性.

在某些情况下,ipad将连接到一个wifi网络,用户将连接到另一个可用的wifi网络.

在这些网络转换期间,不会生成可达 - >无法访问 - >可达通知.

这个连接改变了ipad的ip地址改变的地方,我试图听.

是否存在本地wifi连接更改的通知,或者我是否必须定期轮询我的IP?

reachability ios6

3
推荐指数
1
解决办法
1292
查看次数

如何检查iOS中的网络可达性

我有一个小问题.我正在使用Reachability类来测试互联网连接,它运行良好.但是假设如果用户正在使用Wifi,但是他们无法访问互联网,则应该重试几秒钟,然后它应该向用户显示警报以切换蜂窝网络.以下是我的代码.当Wifi打开时,我没有指出网络连接速度慢的地方.

self.internetReachable = [Reachability reachabilityForInternetConnection];
[self.internetReachable startNotifier];

//_hasConnectivity = ([self.internetReachable currentReachabilityStatus] != NotReachable);
if([self.internetReachable currentReachabilityStatus] == NotReachable) {
    _hasConnectivity = NO;
}
else if([self.internetReachable currentReachabilityStatus] == ReachableViaWiFi){
    _hasConnectivity = YES;
}
else if([self.internetReachable currentReachabilityStatus] == ReachableViaWWAN) {
    _hasConnectivity = YES;
}
Run Code Online (Sandbox Code Playgroud)

networking objective-c reachability ios

3
推荐指数
1
解决办法
8398
查看次数