从iOS6开始,我无法判断应用程序是否可以启动Safari。
如果Safari在设备上受到限制(设置>常规>限制),尝试打开网址时没有任何反应,并且没有迹象表明出现了什么问题:
NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
[[UIApplication sharedApplication] canOpenURL:url]; // Returns YES
[[UIApplication sharedApplication] openURL:url]; // Returns YES
但是,Safari会不启动,并且用户不知道为什么我的按钮“已损坏”。
这对我来说似乎是一个错误所以我提交了一个雷达#12449905。
有没有其他方法可以解决这个问题?
答案 0 :(得分:2)
如果这是一个Apple bug,那么看起来你要做的就是围绕它编程。用户点击按钮后,您总是可以写下这样的内容:
[self performSelector:@selector(notifyUserOfRestrictedAccess) withObject:self afterDelay:.5];
在app delegate中,您可以设置如下属性:
- (void)applicationWillResignActive:(UIApplication *)application {
self.openingExternalProgram = YES;
}
在视图控制器中,创建如下方法:
-(void) notifyUserOfRestrictedAccess {
if (!appDelegate.openingExternalProgram) {
// Message the user via UIAlertView about restricted Safari access
}
appDelegate.openingExternalProgram = NO;
}
我确信有更好的方法,但至少你不必等待Apple。