在iOS上检测飞行模式
如何检测手机是否处于飞行模式? (这是不够的,检测到没有互联网连接,我必须能够区分这两种情况)
尝试使用SCNetworkReachabilityGetFlags
(SystemConfiguration框架)。 如果返回的flagsvariables为0,返回值为YES,则打开飞行模式。
查看苹果的可达性课程 。
您可以在Info.plist中添加设置为true的SBUsesNetwork布尔标志,以显示在飞行模式下在邮件中使用的popup窗口。
我们无法使用私人图书馆获取这些信息。 这里有一些代码,但是当载波信号不可用时它将不起作用。
UIApplication *app = [UIApplication sharedApplication]; NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews]; NSString *dataNetworkItemView = nil; for (id subview in subviews) { if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarSignalStrengthItemView") class]]) { dataNetworkItemView = subview; break; } } double signalStrength = [[dataNetworkItemView valueForKey:@"signalStrengthRaw"] intValue]; if (signalStrength > 0) { NSLog(@"Airplane mode or NO signal"); } else{ NSLog(@"signal available"); }
对于越狱的调整/应用程序:
@interface SBTelephonyManager : NSObject +(id)sharedTelephonyManager; -(BOOL)isInAirplaneMode; @end ... bool isInAirplaneMode = [[%c(SBTelephonyManager) sharedTelephonyManager] isInAirplaneMode];