ios 检测到无线变化

问题描述 投票:0回答:1

当用户的设备突然连接到 wifi 时是否会发出通知?或者类似的东西?

我希望我的应用程序委托中的某个选择器/方法在用户连接到无线时运行。我如何知道何时执行我的选择器?

** 编辑 **

我最终找到了一个 IOS 5 ARC 友好版本的 Reachability(如果有人需要的话)。

ios wifi nsnotifications
1个回答
2
投票

您应该在此处包含 Reachability 标头和实现。

我不久前做了一个项目,我需要在某些时间检查我是否连接到WiFi。以下是一些可能对您有用的代码:

- (BOOL) connectedToNetwork
{
    // Create zero addy
    struct sockaddr_in zeroAddress;
    bzero(&zeroAddress, sizeof(zeroAddress));
    zeroAddress.sin_len = sizeof(zeroAddress);
    zeroAddress.sin_family = AF_INET;

    // Recover reachability flags
    SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
    SCNetworkReachabilityFlags flags;

    BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
    CFRelease(defaultRouteReachability);

    if (!didRetrieveFlags)
    {
        printf("Error. Could not recover network reachability flags\n");
        return 0;
    }

    BOOL isReachable = flags & kSCNetworkFlagsReachable;
    BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;
    BOOL nonWiFi = flags & kSCNetworkReachabilityFlagsTransientConnection;
    return ((isReachable && !needsConnection) && !(nonWiFi)) ? YES : NO;
}

如果连接到 WiFi,则返回 true。

检测何时发生更改的一种方法是运行 NSTimer 并检查结果是否随时间变化。但您不会想太频繁地运行它。

© www.soinside.com 2019 - 2024. All rights reserved.