如何在iPhone上持续获得WiFi强度

时间:2018-10-12 08:01:54

标签: ios objective-c iphone xcode

我需要在我的应用程序中获得持续的WiFi强度。 我正在尝试实现键值观察方法,并通过以下方式从StatusBar获取此信息:

  [UIApplication.sharedApplication()  addObserver:signalListener
                                         forKeyPath:@"IDontKnowWhat"
                                            options:NSKeyValueObservingOptionNew
                                            context:NULL]; 

但这给了我错误:

  

被调用对象类型'UIApplication * _Nonnull'不是函数或   函数指针

后来我想通过这种方式获得信号强度:

    NSArray *subviews = [[[IDontKnowWhat valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];
    NSString *wifiNetworkItemView = nil;    

    for (id subview in subviews) {

        if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {
            wifiNetworkItemView = subview;
        }
    }
    int wifiSignalStrength = [[wifiNetworkItemView valueForKey:@"wifiStrengthRaw"] intValue];

如果可以在UIApplication sharedApplication的statusBar上实现KVO,有人可以给我建议吗? 还是有其他方法可以持续获得WiFi强度?

1 个答案:

答案 0 :(得分:0)

Apple似乎不支持通用Wifi强度分析。但是,有一种非常规的方法来获取信号强度。 NEHotspotHelper具有signalStrength属性,该属性旨在让用户连接到热点。

https://forums.developer.apple.com/thread/67932