如何识别iPhone是否处于飞行模式?

时间:2011-06-14 05:30:43

标签: iphone reachability airplane

我只是想以编程方式了解iPhone是否处于飞行模式。我知道我们必须在信息plist中添加SBUsesNetwork布尔标志,但这不符合我的目的。实际上我正在使用可访问性类来识别互联网可用性,所以当我的应用程序以飞行模式启动时,从我的代码中提供两个警报,而另一个来自SBUsesNetwork标志。我想要显示这两个警报中的任何一个。所以我想以编程方式知道手机是否处于飞行模式?

2 个答案:

答案 0 :(得分:0)

如果不使用私有库,我们无法获取此信息。这是一些代码,但是当载波信号不可用时它将不起作用。

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");
  }

答案 1 :(得分:-1)

NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
[infoDict objectForKey:@"SBUsesNetwork"];

希望这有帮助。