SFSafariViewController允许网页访问存储在Safari中的cookie。我想用SFSafariViewController执行一些后台任务来利用cookie。但是我不希望用户看到SFSafariViewController。如何隐藏SFSafariViewController?
有没有办法隐藏SFSafariViewController并允许用户在显示SFSafariViewController时触摸屏幕?
SFSafariViewController允许网页访问存储在Safari中的cookie。我想用SFSafariViewController执行一些后台任务来利用cookie。但是我不希望用户看到SFSafariViewController。如何隐藏SFSafariViewController?
有没有办法隐藏SFSafariViewController并允许用户在显示SFSafariViewController时触摸屏幕?
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
如果你打算提交到App Store不要这样做。
从https://developer.apple.com/app-store/review/guidelines/:
5.1.1(ⅳ)SafariViewContoller必须用于可视地向用户提供信息;控制器可能不会被其他视图或图层隐藏或遮挡。此外,应用程序可能不会使用 SafariViewController来跟踪用户,而他们不知情并且 同意。
如果您需要访问cookie,请改为使用WKWebView。请参阅Getting all cookies from WKWebView。不过,这些cookie不会与Safari共享。
这对我有效,谢谢! – hungbm06
将alpha设置为零不再适用于iOS 10.您可以将主窗口window.windowLevel设置为较高的数字,然后将其设置回0. – Brian
@Away Lin在提交时遇到了任何拒绝您的应用程序的情况?我在问这个问题,因为在答案中使用SFSafariViewControllerClass会违反第二个答案中指出的法律问题 –