2010-06-15 85 views
5

Làm cách nào để bạn có thể phát hiện xem Safari đã bị tắt bởi kiểm soát của phụ huynh trên iPhone hay chưa? Tôi biết điều đó là có thể vì App X3Watch từ chối hoạt động cho đến khi Safari bị tắt. Theo như tôi có thể thấy không có api cho kiểm soát của cha mẹ, vì vậy những kỹ thuật có thể được sử dụng cho điều này?Cách phát hiện xem Safari có bị vô hiệu hóa trên iPhone

Trả lời

4

Tôi chưa thử nghiệm điều này, nhưng là OS3.0 trở lên, bạn có thể phát hiện xem có thể mở URL bằng bất kỳ ứng dụng nào trên hệ thống bằng cách sử dụng [[UIApplication sharedApplication] canOpenURL:myURL] hay không. Tôi sẽ betcha nó sẽ trả về NO nếu Safari bị tắt.

+0

Vâng, tôi đã thử và bạn đã đúng. Cảm ơn! – zorro2b

+2

Điều này vẫn hoạt động? Tôi đã thử điều này trên iOS 6 (iPad 3), nhưng nó trả về YES ngay cả khi Safari bị vô hiệu hóa trong Hạn chế. Tuy nhiên, nếu tôi thực sự gọi openURL :, Safari KHÔNG mở khi bị tắt, như mong đợi. – Michael

+2

Để trả lời câu hỏi của riêng tôi: [link] (http://stackoverflow.com/questions/12771177/uiapplications-canopenurl-openurl-return-misleading-result) – Michael

0

Đây là nỗ lực của tôi để đưa giải pháp này vào bộ điều khiển chế độ xem. Hai bools cần được sử dụng vì người dùng có thể mở một chương trình bên ngoài độc lập với safari khi khung nhìn được tải, nhưng nút cần safari chưa được mở.

@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]; 
} 
Các vấn đề liên quan