SFSafariViewController 在移动模式下无法打开 url
SFSafariViewController doesn't open url in mobile mode
我有简单的代码
NSURL *url = [NSURL URLWithString:@"https://en.wikipedia.org/wiki/Cat"];
if ([SFSafariViewController class] != nil) {
SFSafariViewController *sfvc = [[SFSafariViewController alloc] initWithURL:url];
[self presentViewController:sfvc animated:YES completion:nil];
} else {
[[UIApplication sharedApplication] openURL:url];
}
我在 iOS 9.3 上测试过。当我第一次打开 url 时,我可以在移动模式下看到该页面。
(图1)
接下来我单击桌面。我可以看到这个页面(图2)
(图2)
我重新启动了应用程序,SFSafariViewController 仍然以桌面模式打开页面(图 2)。
我可以使用 SFSafariViewController 在移动模式下强制打开 url 吗?我该怎么做?
在此上下文中的 "Desktop" link 意味着用户将看到 s/he 在其 Macintosh 或 PC 上单击时通常会看到的内容。这是 预期的 行为。
如果您暂停然后恢复该应用程序,尤其是当 SFSafariViewController 对用户可见时,该应用程序将在它停止的同一页面上恢复,除非您告诉它重新打开原始 URL(您可以通过让您的应用程序委托监视 applicationWillEnterForeground:
然后强制重新加载视图控制器来做到这一点)。
如果它工作正常,那么您需要做的就是单击维基百科页脚中的移动视图,否则重建您的应用程序并清理它,它将恢复默认行为
我找到的最终解决方案,它使用服务器支持的带有前缀 (m.) 的特定链接,它将强制使用移动模式打开 url:
NSURL *url = [NSURL URLWithString:@"https://en.m.wikipedia.org/wiki/Cat"];
我有简单的代码
NSURL *url = [NSURL URLWithString:@"https://en.wikipedia.org/wiki/Cat"];
if ([SFSafariViewController class] != nil) {
SFSafariViewController *sfvc = [[SFSafariViewController alloc] initWithURL:url];
[self presentViewController:sfvc animated:YES completion:nil];
} else {
[[UIApplication sharedApplication] openURL:url];
}
我在 iOS 9.3 上测试过。当我第一次打开 url 时,我可以在移动模式下看到该页面。
接下来我单击桌面。我可以看到这个页面(图2)
我重新启动了应用程序,SFSafariViewController 仍然以桌面模式打开页面(图 2)。 我可以使用 SFSafariViewController 在移动模式下强制打开 url 吗?我该怎么做?
在此上下文中的 "Desktop" link 意味着用户将看到 s/he 在其 Macintosh 或 PC 上单击时通常会看到的内容。这是 预期的 行为。
如果您暂停然后恢复该应用程序,尤其是当 SFSafariViewController 对用户可见时,该应用程序将在它停止的同一页面上恢复,除非您告诉它重新打开原始 URL(您可以通过让您的应用程序委托监视 applicationWillEnterForeground:
然后强制重新加载视图控制器来做到这一点)。
如果它工作正常,那么您需要做的就是单击维基百科页脚中的移动视图,否则重建您的应用程序并清理它,它将恢复默认行为
我找到的最终解决方案,它使用服务器支持的带有前缀 (m.) 的特定链接,它将强制使用移动模式打开 url:
NSURL *url = [NSURL URLWithString:@"https://en.m.wikipedia.org/wiki/Cat"];