2011-01-26 5 views
49

पर हवाई जहाज मोड का पता लगाएं मैं कैसे पता लगा सकता हूं कि फोन हवाई जहाज मोड में है या नहीं? (यह पता लगाने के लिए पर्याप्त नहीं है कि कोई इंटरनेट कनेक्शन नहीं है, मुझे इन 2 मामलों में अंतर करने में सक्षम होना चाहिए)आईओएस

+6

तुम समझा सकते हैं ** क्यों ** आप इन दो मामलों में भेद करने की जरूरत है? यदि हवाईअड्डे के कारण कवरेज या कनेक्शन के कारण उपयोगकर्ता का कोई कनेक्शन नहीं है तो इससे क्या फर्क पड़ता है? – Jasarien

+12

Becuase हम इसे अन्य मोबाइल प्लेटफार्मों पर अंतर कर सकते हैं और हम जितना संभव हो सके प्लेटफॉर्म पर समान कार्यक्षमता रखना चाहते हैं। हम इस पर निर्भर करते हुए अलग-अलग स्थिति संदेश दिखाते हैं और हम समस्या को ठीक करने के लिए उपयोगकर्ता को मार्गदर्शन करने का प्रयास करते हैं। – Caner

+7

मुझे पता है कि यह एक पुराना सवाल है, लेकिन इस 'असाधारण संकीर्ण स्थिति' की आवश्यकता को स्पष्ट करने के लिए: जब एक आईफोन हवाई जहाज मोड में होता है, तो जीपीएस स्थान बेहद अविश्वसनीय होते हैं, लेकिन त्रुटियों का कारण नहीं बनते हैं। मैंने जीपीएस कार्यक्रमों की सदस्यता ली और मेरे ऐप को 2 घंटे तक चल दिया। कोई त्रुटि नहीं, कोई जीपीएस स्थान नहीं है, और 'स्थान घटनाएं प्राप्त कर सकते हैं' के लिए सभी चेक वापस YES। हालांकि, 3 जी और वाईफ़ाई को अक्षम करने से मुझे आंतरिक 'स्थान प्राप्त करने' चेक के लिए मैन्युअल रूप से नहीं दिया गया। सामान्य पहुंच क्षमता जांच के विपरीत स्पष्ट रूप से हवाई जहाज मोड का पता लगाने की आवश्यकता है। – Owen

उत्तर

18

SCNetworkReachabilityGetFlags (सिस्टम कॉन्फ़िगरेशन फ्रेमवर्क) का उपयोग करने का प्रयास करें। यदि झंडे परिवर्तनीय हाथ वापस 0 है और वापसी मूल्य हाँ है, हवाई जहाज मोड चालू है।

ऐप्पल के Reachability classes देखें।

+5

नमस्ते, वापसी मूल्य हाँ है और मुझे इन दोनों परिस्थितियों में शून्य मिलता है: 1) वाईफ़ाई सेटिंग्स से अक्षम है और फोन 2 में कोई सिम कार्ड नहीं है) हवाई जहाज मोड। तो दुर्भाग्य से आपका सुझाव मेरी समस्या का समाधान नहीं करता है। – Caner

+0

दोनों स्थितियों में पहुंच योग्यता की स्थिति नहीं है? ठीक है, ब्लूटूथ स्थिति अलग हो सकती है। – Felix

5

आप एयरलाइन मोड में मेल में उपयोग किए गए पॉपअप को प्रदर्शित करने के लिए अपने Info.plist में SBUsesNetwork Boolean ध्वज सेट को सही में जोड़ सकते हैं।

+12

EXCEPT कि यह अनियंत्रित है और आईओएस की भावी रिलीज में तोड़ सकता है। –

1

हम निजी पुस्तकालयों का उपयोग किए बिना यह जानकारी नहीं प्राप्त कर सकते हैं। यहां कुछ कोड दिया गया है लेकिन वाहक सिग्नल उपलब्ध नहीं होने पर यह काम नहीं करेगा।

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

जेलब्रेक तोड़ मरोड़/एप्लिकेशन के लिए:

@interface SBTelephonyManager : NSObject 
+(id)sharedTelephonyManager; 
-(BOOL)isInAirplaneMode; 
@end 

... 

bool isInAirplaneMode = [[%c(SBTelephonyManager) sharedTelephonyManager] isInAirplaneMode];