-1

iPhoneが機内モードになっているかどうかをプログラムで知りたいだけです。情報plistにSBUsesNetworkブールフラグを追加する必要があることはわかっていますが、それは私の目的には役立ちません。実際、私はリーチャビリティクラスを使用してインターネットの可用性を識別しているため、機内モードで起動したときにアプリがコードからとSBUsesNetworkフラグから2つのアラートを出します。これら2つのアラートのいずれかを表示したいと思います。だから私は電話が機内モードにあるかどうかをプログラムで知りたいですか?

4

2 に答える 2

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");
  }
于 2016-11-29T11:24:32.313 に答える
-1
NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
[infoDict objectForKey:@"SBUsesNetwork"];

お役に立てれば。

于 2013-03-29T04:11:10.363 に答える