ios - 如何在 iPhone 上获得持续的 WiFi 强度
问题描述
我需要在我的应用程序中获得持续的 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 强度?
解决方案
Apple 似乎不支持一般用途的 Wifi 强度分析。但是,有一种非正统的方法来获取信号强度。NEHotspotHelper 有一个 signalStrength 属性,专为用户连接热点而设计。