2017-09-27 6 views
2

以下は私のコードです。ステータスバーから信号強度を取得しようとしています。ステータスバークラッシュから携帯電話信号を取得

UIApplication *app = [UIApplication sharedApplication]; 
NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews]; 

クラッシュ(IOSの11、Xcodeの9、iPhone X)で発生した: -

[UIStatusBar_Modern valueForUndefinedKeyを:]:このクラスは、キー値コーディング準拠キーforegroundView

+0

お探しの商品は? Wifi信号ですか?バーはありませんか? – KiranJasvanee

+0

無線LAN信号のアクティブバーがありませんか?またはSignalMode? – KiranJasvanee

+0

@KiranJasvaneeネットワークタイプ3g、4g、Wifi、LTEが必要です。 – Ashish

答えて

6
ためではありません

これは使用できます

NSArray *subviews = nil; 
id statusBar = [[UIApplication sharedApplication] valueForKey:@"statusBar"]; 
if ([statusBar isKindOfClass:NSClassFromString(@"UIStatusBar_Modern")]) { 
    subviews = [[[statusBar valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews]; 
} else { 
    subviews = [[statusBar valueForKey:@"foregroundView"] subviews]; 
} 
+0

私はwifi、3g、またはlteがそこにある場合に取得するキーから、この問題の投稿を持っています..? – Ashish

+0

ありがとうございました@yz wuこれはまさに私が探していたものです+1 +1 –

+0

@Ashish上記のコードスニペットはiPhone Xの変更で問題を解決します。コードを取得するには、 'UIStatusBarDataNetworkItemView'ビューを抽出するためにサブビューをループし、' dataNetworkType'値を取得する必要があります。それはこのようなものになります。 ([ ' ' [NSClassFromString(@ "UIStatusBarDataNetworkItemView")クラス]サブビューisKindOfClass]){ ' ' [(のNSNumber *)サブビュー(サブビューのIDサブビュー){ ' '場合ため ' valueForKey:@ "dataNetworkType"] intValue]; // dataNetworkType値は、それを格納して使用するか、メソッドから返すかを確認する ' ' break; ' '} ' '} ' –

関連する問題