【发布时间】:2018-12-24 17:06:00
【问题描述】:
为了获取 iphone 上的 wifi 或蜂窝信号强度, 我编写了以下代码作为各个站点的参考, 但它没有出现在 IF 声明中 “UIStatusBarSignalStrengthItemView”或“_UIStatusBarCellularSignalView”。
您需要许可吗?
■开发环境
Xcode9.4.1
iPhoneX iOS:11.0.1
■Test1.m
#import "Test1.h"
@implementation Test1 : NSObject
- (int)antennaBar
{
NSLog(@"%@",[[[UIApplication sharedApplication] valueForKeyPath:@"statusBar"] subviews]);
NSLog(@"antennaBar 1");
NSLog(@"antennaBar 2");
// NSArray *subviews = [[[apps valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];
NSArray *subviews = nil;
NSLog(@"antennaBar 3");
id statusBar = [[UIApplication sharedApplication] valueForKey:@"statusBar"];
NSLog(@"antennaBar 4");
if ([statusBar isKindOfClass:NSClassFromString(@"UIStatusBar_Modern")]) {
NSLog(@"antennaBar 5");
subviews = [[[statusBar valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];
} else {
NSLog(@"antennaBar 6");
subviews = [[statusBar valueForKey:@"foregroundView"] subviews];
}
NSLog(@"antennaBar 7");
NSString *dataNetworkItemView = nil;
NSLog(@"antennaBar 8");
for (id subview in subviews) {
NSLog(@"Class - %@", NSStringFromClass([subview class]));
NSLog(@"antennaBar aaaaaaa");
if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarSignalStrengthItemView") class]]) {
NSLog(@"antennaBar bbbbbb");
dataNetworkItemView = subview;
break;
}
if([subview isKindOfClass:[NSClassFromString(@"_UIStatusBarCellularSignalView") class]]) {
NSLog(@"antennaBar eeeeee");
dataNetworkItemView = subview;
int fffff = [subview valueForKey:@"numberOfActiveBars"];
NSLog(@"fffff=%d",fffff);
break;
}
}
for (id subview in subviews)
{
NSLog(@"antennaBar cccccc");
if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]])
{
NSLog(@"antennaBar dddddd");
[(NSNumber*)[subview valueForKey:@"dataNetworkType"] intValue];
}
}
NSLog(@"antennaBar 9");
NSLog(@"12345");
id statusBaraaaa = [[UIApplication sharedApplication] valueForKey:@"statusBar"];
NSArray *children = nil;
NSLog(@"23456");
children = [[[statusBaraaaa valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];
NSLog(@"34567");
int type = 0;
NSLog(@"45678");
for (id child in children) {
NSLog(@"56789");
if ([child isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {
NSLog(@"67890");
type = [[child valueForKeyPath:@"dataNetworkType"] intValue];
}
}
if (type == 0) {
return NO;
}else{
return YES;
}
int aaa = [[dataNetworkItemView valueForKey:@"signalStrengthBars"] intValue];
NSLog(@"aaa=%d",aaa);
return aaa;
}
@end
■Test1.h
#import <Foundation/Foundation.h>
#import "UIKit/UIKit.h"
@interface Test1 : NSObject
- (int)antennaBar;
@end
■注销
( "<_uistatusbar: region="{\n" bottomleading='\"<_UIStatusBarRegion:' identifier="bottomLeading," enabled="1," displayitems="{(\n)}">\";\n expandLeading = \"<_uistatusbarregion: : identifier="expandedLeading," enabled="0," displayitems="{(\n)}">\";\n expandTrailing = \"<_uistatusbarregion: identifier="expandedTrailing," enabled="0," displayitems="{(\n)}">\ ";\nleading = \"<_uistatusbarregion: identifier="leading," enabled="1," displayitems="{(\n" item="<_UIStatusBarTimeItem:">, view=<_uistatusbarstringview: frame="(14.3333" text="12:10" userinteractionenabled="NO;" layer="<_UILabelLayer:">>>\n)}>\";\n 丸 = \"<_uistatusbarregion: identifier="pill," enabled="0," displayitems="{(\n)}">\";\n systemUpdates = \"<_uistatusbarregion:>
1
2
3
4
5
7
8
类 - UIView
啊啊啊啊
类 - UIView
啊啊啊啊
类 - UIView
啊啊啊啊
类 - UIView
啊啊啊啊
类 - UIView
啊啊啊啊
类 - UIView
啊啊啊啊
cccccc
cccccc
cccccc
cccccc
cccccc
cccccc
9
12345
23456
34567
45678
56789
56789
56789
56789
56789
56789
【问题讨论】:
标签: ios objective-c xcode signal-strength