2010-06-15 16 views
5

आप कैसे पता लगा सकते हैं कि आईफोन पर अभिभावकीय नियंत्रण से सफारी अक्षम कर दिया गया है या नहीं? मुझे पता है कि यह संभव है क्योंकि ऐप एक्स 3 वॉच सफारी अक्षम होने तक काम करने से इंकार कर देता है। जहां तक ​​मैं देख सकता हूं कि अभिभावकीय नियंत्रण के लिए कोई एपीआई नहीं है, तो इसके लिए किस तकनीक का उपयोग किया जा सकता है?आईफोन पर सफारी अक्षम होने पर कैसे पता लगाया जाए

उत्तर

4

मैंने इसका परीक्षण नहीं किया है, लेकिन ओएस 3.0 और बाद में, आप यह पता लगा सकते हैं कि [[UIApplication sharedApplication] canOpenURL:myURL] का उपयोग कर सिस्टम पर किसी भी एप्लिकेशन द्वारा यूआरएल खोला जा सकता है या नहीं। अगर सफारी अक्षम है तो मैं betcha होगा NO

+0

हाँ, मैंने कोशिश की और आप सही हैं। धन्यवाद! – zorro2b

+2

क्या यह अभी भी काम करता है? मैंने आईओएस 6 (आईपैड 3) पर यह कोशिश की, लेकिन अगर सफारी प्रतिबंधों में अक्षम है तो भी यह हाँ देता है। हालांकि, अगर मैं वास्तव में openURL को कॉल करता हूं:, अपेक्षित होने पर सफारी अक्षम होने पर नहीं खुलता है। – Michael

+2

मेरे अपने प्रश्न का उत्तर देने के लिए: [link] (http://stackoverflow.com/questions/12771177/uiapplications-canopenurl-openurl-return-misleading-result) – Michael

0

यहां एक दृश्य नियंत्रक में इसका समाधान शामिल करने का मेरा प्रयास है। दो बूलों का उपयोग करने की आवश्यकता है क्योंकि दृश्य लोड होने पर उपयोगकर्ता सफारी से स्वतंत्र रूप से बाहरी प्रोग्राम खोल सकता है, लेकिन बटन को सफारी की आवश्यकता है, अभी तक खोला नहीं गया है।

@implementation ViewController { 
@private BOOL externalProgramOpened; 
@private BOOL buttonPressed; 
} 

-(void) setExternalProgramOpened { 
    // Only set to yes if we're trying to open safari 
    if(buttonPressed) { 
     externalProgramOpened = YES; 
    } 
} 

-(void) notifyUserOfRestrictedAccess { 

    if(externalProgramOpened == NO) { 
      [[[UIAlertView alloc] initWithTitle:@"Safari Needs to be enabled!" 
            message:@"It looks like the Safari browser is 
               disabled. Please enable it 
               (Settings>General>Restrictions) in order to 
               continue." 
            delegate:nil 
          cancelButtonTitle:@"Ok" 
          otherButtonTitles: nil] show]; 
    } else { 
     externalProgramOpened = NO; 
    } 

    buttonPressed = NO; 
} 

-(void) viewWillAppear:(BOOL)animated { 
    externalProgramOpened = NO; 
    buttonPressed = NO; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(setExternalProgramOpened) 
              name:UIApplicationWillResignActiveNotification 
              object:nil]; 
} 

-(void) viewWillDisappear:(BOOL)animated { 

    [[NSNotificationCenter defaultCenter] removeObserver:self 
              name:UIApplicationWillResignActiveNotification 
              object:nil]; 
    [super viewWillDisappear:animated]; 

} 

- (IBAction)buttonPressed:(id)sender { 
    buttonPressed = YES; 

    NSString * URL = *someURL*; 

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:URL]]; 

    [self performSelector:@selector(notifyUserOfRestrictedAccess) withObject:self 
       afterDelay:.75]; 
} 
संबंधित मुद्दे