ios - 在以下代码中加入3G检测

标签 ios objective-c reachability

我有一种检查 Wi-Fi 的方法,这是我从一个旧项目中获得的,现在我需要实际检查 3G 或 < strong>Wifi,如果没有,请给出错误消息。

原始样本工作:

- (BOOL)checkForWIFIConnection {

    Reachability* wifiReach = [Reachability reachabilityForLocalWiFi];
    NetworkStatus netStatus = [wifiReach currentReachabilityStatus];
    if (netStatus!=ReachableViaWiFi)
    {
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Sem conexão à internet!", @"AlertView")
                                                            message:NSLocalizedString(@"Não está conectado à internet. Tente novamente após se connectar.", @"AlertView")
                                                           delegate:self
                                                  cancelButtonTitle:NSLocalizedString(@"OK", @"AlertView")
                                                  otherButtonTitles: nil];
        [alertView show];
        return NO;
    }
    else {
        return YES;
    }
}

如何让它检查 ReachableViaWWAN ?我可以在这里添加它吗 (<-) ??

- (BOOL)checkForWIFIConnection {

        Reachability* wifiReach = [Reachability reachabilityForLocalWiFi];
        NetworkStatus netStatus = [wifiReach currentReachabilityStatus];
        if (netStatus!=ReachableViaWiFi && ReachableViaWWAN) <- (i get an error saying use of logical && with constant operand)
        {
            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Sem conexão à internet!", @"AlertView")
                                                                message:NSLocalizedString(@"Não está conectado à internet. Tente novamente após se connectar.", @"AlertView")
                                                               delegate:self
                                                      cancelButtonTitle:NSLocalizedString(@"OK", @"AlertView")
                                                      otherButtonTitles: nil];
            [alertView show];
            return NO;
        }
        else {
            return YES;
        }
    }

感谢您的帮助。

最佳答案

只需更改:

Reachability* wifiReach = [Reachability reachabilityForLocalWiFi];

到:

Reachability* wifiReach = [Reachability reachabilityForInternetConnection];

if (netStatus!=ReachableViaWiFi)

到:

if (netStatus == NotReachable)

换句话说:

Reachability* wifiReach = [Reachability reachabilityForInternetConnection];
NetworkStatus netStatus = [wifiReach currentReachabilityStatus];
if (netStatus == NotReachable)
{

顺便说一句 - 请查阅 Objective-C 教程以了解如何编写复合表达式。你的if声明需要是这样的:

if (netStatus!=ReachableViaWiFi && netStatus!=ReachableViaWWAN)

虽然这将解决编译器问题,但它不适用于您的代码,因为 WWAN使用 reachabilityForLocalWiFi 时永远不会给出值.

关于ios - 在以下代码中加入3G检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22306158/

相关文章:

ios - 当他们向下移动屏幕时从左到右移动 UIView

ios - 尝试从 viewDidLoad 重新加载可见单元格中的数据

ios - 发送到不可变对象(immutable对象)的变异方法'

整个应用程序中的 IOS 可达性以及仅在 View 加载时的可达性

ios - 将 UINavigationBar 更改为透明色

ios - 在 SwiftUI 中折叠双列 NavigationView 详细信息,就像在 UISplitViewController 上折叠一样?

iphone - iOS : Call a method just one time

ios - 如何在 Theos 中向 UIStatusBar 添加 subview ?

ios - 检查 URL 中特定页面的可达性

ios - 以编程方式将 UIView 插入其他 View 的顶部