SFSafariViewController允许网页访问存储在Safari中的cookie。我想用SFSafariViewController执行一些后台任务来使用cookie。但是我不希望用户看到SFSafariViewController。
有没有办法隐藏SFSafariViewController并允许用户在呈现SFSafariViewController时触摸屏幕?
答案 0 :(得分:2)
Class SFSafariViewControllerClass = NSClassFromString(@"SFSafariViewController");
if (SFSafariViewControllerClass) {
id safController = [[SFSafariViewControllerClass alloc] initWithURL:[NSURL URLWithString:urlString]];
UIViewController *windowRootController = [[UIViewController alloc] init];
self.secondWindow = [[UIWindow alloc] initWithFrame:CGRectZero];
self.secondWindow.rootViewController = windowRootController;
[self.secondWindow makeKeyAndVisible];
[self.secondWindow setAlpha:0];
[windowRootController presentViewController:safController animated:YES completion:^{
[self.secondWindow.rootViewController dismissViewControllerAnimated:NO completion:NULL];
}];
}
您可以使用该代码隐藏SFSafariViewControllerClass
答案 1 :(得分:2)
如果您计划提交到App Store,请不要这样做。
来自https://developer.apple.com/app-store/review/guidelines/:
5.1.1(iv)必须使用SafariViewContoller向用户显示信息;控制器可能不会被隐藏或遮挡 其他视图或图层。此外,应用程序可能不会使用 SafariViewController在他们不知情的情况下跟踪用户 同意。
如果您需要访问cookie,请改用WKWebView。见Getting all cookies from WKWebView。但是,这些cookie不会与Safari共享。