我知道我的应用程序可以通过执行以下操作在 Safari 中打开特定 URL:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.example.com/"]];
但是,有没有办法让我的应用程序在不打开 URL 的情况下切换到 Safari ?
我想切换到 Safari,但让它继续显示用户上次查看它时打开的任何页面。
我知道我的应用程序可以通过执行以下操作在 Safari 中打开特定 URL:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.example.com/"]];
但是,有没有办法让我的应用程序在不打开 URL 的情况下切换到 Safari ?
我想切换到 Safari,但让它继续显示用户上次查看它时打开的任何页面。
不幸的是,没有,除非您可以弄清楚如何在非越狱环境中通过捆绑 id 启动应用程序。
否则,如果您处于越狱环境中,则可以使用以下命令通过其 bundle id 启动应用程序:
[self launch:(@"com.apple.mobilesafari")];
#pragma mark - Launch Application
-(void)launch:(NSString *)bundle {
Class SBApplicationController = objc_getClass("SBApplicationController");
id appController = [SBApplicationController sharedInstance];
NSArray *apps = [appController applicationsWithBundleIdentifier: bundle];
if ([apps count] > 0) {
//Wait .5 seconds.. then launch.
[self performSelector:@selector(launchTheApp:) withObject:[apps objectAtIndex:0] afterDelay: 0.5];
} else {
id app = [appController applicationWithDisplayIdentifier: bundle];
if (app) {
//Wait .5 seconds.. then launch.
[self performSelector:@selector(launchTheApp:) withObject:app afterDelay: 0.5];
}
}
}
-(void)launchTheApp:(id)app {
Class SBUIController = objc_getClass("SBUIController");
id uiController = [SBUIController sharedInstance];
if([uiController respondsToSelector:@selector(animateLaunchApplication:)]) {
[uiController animateLaunchApplication:app animateDefaultImage:YES];
} else {
[uiController activateApplicationAnimated:app];
}
}
以这种方式启动应用程序基本上与点击 SpringBoard 中的 Safari 图标相同。这只会在应用程序中启动,恢复之前处于活动状态的任何网络会话。